python 入门篇之疑难点一

2026-02-17 20:40:41

1、list:列表。关于列表主要有创建、访问、添加、删除和替换几方面来看。

创建:L=[1,2,3,4,5]

访问:分按照索引访问和倒序访问。前者:L[0]=1,L[4]=5;后者:L[-1]=5,L[-5]=1

添加:

1,直接在最后添加:L.append()

例如:L.append(6)则L=[1,2,3,4,5,6]

2. L.insert()这个需要输入两个参数(前面参数是索引号,后面是新元素),例如L.insert(0,8)则L=[8,1,2,3,4,5]

3,删除:

L.pop(),这个是删除最后一个元素;如果删除某个位置的元素,只需要在()中输入索引号即可。如:L.pop(0)则L=[2,3,4,5]

4,替换:

想替换哪个位置的元素,只需要L[xx]其中xx就是替换的元素的索引号。例如:

L[1]='Adam'则L=[1,'Adam',3,4,5]

2、tuple:元组。创建tuple例如:t=(1,2,3)

注意:单元素的tuple必须要在元素后面添加“,”,例如:t=(1,)

查看tuple只需要t[xx]其中xx表示元素的索引号。

tuple是不可变的,一旦创建便不可修改。

3、dict:字典。关于dict主要有创建、访问、添加和遍历几方面来看。

创建:dict={'A':1,'B':2,'C':3}前面的为Key后面的问Value,dict就是有Key:Value组合成的。可以通过Key来查找Value。

访问:d[key]访问时必须保证key是在dict中的。例如:print d['A']=1;key在不在dict中需要判断(一般都使用dict提供的get方法即可),例如:print d.get('A')返回1;如果输入的key不存在dict中,那么print d['p']返回的是None。

注意:dict的特点:无序,key必须是不可变。

更新(添加):直接用赋值语句即可。例如:d['M']=4则print d返回的可能是{''C':3,'M':4,A':1,'B':2}因为dict是无序的,所以返回的顺序也是不确定的。

遍历:dict={'A':1,'B':2,'C':3使用for即可

for key in d:

      print key

则返回的是对应的key值:

A

B

C

4、set:如果只需要dict中的key,可以使用set。

创建:

s=set{['A','B','C']}

注意:set也是无序的,而且set不能包含重复的元素。

访问:

直接使用in来判断元素是否在set中即可。

遍历:使用for key in s:

更新:添加元素使用s.add()例如:s.add('D')

删除元素使用s.remove('A')。

注意:删除需要先判断元素是否在set中,否则会报错。

5、函数:包括调用、编写函数。

调用:python内置很多函数,可以直接调用。可以直接从Python的官方网站查看文档:http://docs.python.org/2/library/functions.html了解更多内置函数。

编写:使用def例如:

def my_abs(x):

       if x >= 0:        

            return x  

       else:        

             return -x

(格式:def 函数名 ():)

注意:1,定义默认参数,默认参数只能定义在必需参数的后面。

例如:(world就是默认参数,当没有参数输入时,直接返回:Hello,world.;当有参数输入时,返回Hello,Bart.)

def greet(name='world'):

       print 'Hello,'+name+'.'

greet()

greet('Bart')

2.定义可变参数:函数参数都是用*args表示。例如:

def average(*args):

       sum = 0.0

       if len(args) == 0:

          return sum

        for x in args:

              sum = sum + x

        return sum / len(args)

print average()

print average(1, 2)

print average(1, 2, 2, 3, 4)

6、切片:对list进行切片其实就是取一个list的部分元素。切片格式一般如下:

L[0:3]表示取L的前三个元素,不包括L[3];也可简写为L[:3].

L[:]表示从头取到尾,实际就是复制了一个L

如果想要每隔两个元素取一次,则可以在第三个位置添加间隔数,例如:

L[0:10:2]

例如:

L = range(1, 101)

print L[0:10]

print L[2::3]

print L[4:50:5]

其实就是:利用切片,分别取出L中

1. 前10个数;2. 3的倍数;3. 不大于50的5的倍数。

上面的切片方法对于tuple、字符串等同样适用。

倒序切片就是从后往前进行切片。例如:

L = range(1, 101)

print L[-10:]

print L[-46::5]

其实就是利用倒序切片对 1 - 100 的数列取出:

* 最后10个数;

* 最后10个5的倍数。

7、迭代:利用for循环遍历list或者tuple等任何可迭代的对象的过程就是迭代。

索引迭代:迭代永远是取出元素本身,而非元素的索引。那么,可以使用enumerate()函数来同时得到索引和元素。

 L = ['Adam', 'Lisa', 'Bart', 'Paul'] 

 for index, name in enumerate(L):  

       print index, '-', name

 0 - Adam 

1 - Lisa 

2 - Bart 

3 - Paul

实际上,enumerate() 函数把:L=['Adam', 'Lisa', 'Bart', 'Paul']变成了:

L=[(0, 'Adam'), (1, 'Lisa'), (2, 'Bart'), (3, 'Paul')]

迭代dict的value:有两个方法values()和itervalues()。关于两者的区别如下:

1. values() 方法实际上把一个 dict 转换成了包含 value 的list。

2. 但是 itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。

3. 打印 itervalues() 发现它返回一个 <dictionary-valueiterator> 对象,这说明在Python中,for 循环可作用的迭代对象远不止 list,tuple,str,unicode,dict等,任何可迭代对象都可以作用于for循环,而内部如何迭代我们通常并不用关心。

例如:对于values()方法

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }

print d.values() 

for v in d.values():   

      print v

返回的是:

85

95

59

对于intervalues()方法

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 } 

print d.itervalues() 

for v in d.itervalues():   

      print v 

返回的是:

<dictionary-valueiterator object at 0x106adbb50>(注释:打印 itervalues() 发现它返回一个 <dictionary-valueiterator> 对象)

85

95 

59

迭代dict的key和value:如果想同时迭代 key和value,可以使用items()方法。

例如:

请根据dict:

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59, 'Paul': 74 }

打印出 name : score,最后再打印出平均分 average : score。

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59, 'Paul': 74 }

sum = 0.0

for k, v in d.items():

      sum = sum + v

      print k,':',v

print 'average', ':', sum/len(d)

注意:和 values() 有一个 itervalues() 类似, items() 也有一个对应的 iteritems(),iteritems() 不把dict转换成list,而是在迭代过程中不断给出 tuple,所以, iteritems() 不占用额外的内存。

8、列表生成式:

列表生成式可以用一行语句代替通过繁琐的循环方式生成list:

[x * x for x in range(1, 11)][1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

这种写法就是Python特有的列表生成式。利用列表生成式,可以以非常简洁的代码生成 list。

9、复杂表达式:

使用for循环的迭代不仅可以迭代普通的list,还可以迭代dict。

假设有如下的dict:

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }

完全可以通过一个复杂的列表生成式把它变成一个 HTML 表格:

tds = ['<tr><td>%s</td><td>%s</td></tr>' % (name, score) for name, score in d.iteritems()]

print '<table>'

print '<tr><th>Name</th><th>Score</th><tr>' 

print '\n'.join(tds) 

print '</table>'

注:字符串可以通过 % 进行格式化,用指定的参数替代 %s。字符串的join()方法可以把一个 list 拼接成一个字符串。

把打印出来的结果保存为一个html文件,就可以在浏览器中看到效果了:

<table border="1"> 

<tr><th>Name</th><th>Score</th></tr> 

<tr><td>Lisa</td><td>85</td></tr> 

<tr><td>Adam</td><td>95</td></tr> 

<tr><td>Bart</td><td>59</td></tr> 

</table>

python 入门篇之疑难点一

10、条件过滤:列表生成式的 for 循环后面还可以加上 if 判断。通过判断来进行筛选。例如:

如果我们只想要1-10之间偶数的平方,可以加上 if 来筛选:

[x * x for x in range(1, 11) if x % 2 == 0] 

返回的是:

[4, 16, 36, 64, 100]

11、多层表达式:

for循环可以嵌套,因此,在列表生成式中,也可以用多层 for 循环来生成列表。

对于字符串 'ABC' 和 '123',可以使用两层循环,生成全排列:

[m + n for m in 'ABC' for n in '123'] 

返回的是:

['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']

相关推荐
  • 阅读量:186
  • 阅读量:112
  • 阅读量:182
  • 阅读量:85
  • 阅读量:166
  • 猜你喜欢