Lec 5 List Comprehensions

1.  列表可包含任何数据类型的元素,单个列表中的元素无须全为同一类型。

2.  append() 方法向列表的尾部添加一个新的元素且只接受一个参数。

3.  extend()方法向列表的尾部添加一个新列表的所有元素且只接受一个列表参数。

names = ['lr','hjr','hjj','lqq']
>>> names
['lr', 'hjr', 'hjj', 'lqq']
>>> names.append('ld')  添加单个元素
>>> names
['lr', 'hjr', 'hjj', 'lqq', 'ld']
>>> names.extend(['ly','ym'])   添加一个列表里的所有元素
>>> names
['lr', 'hjr', 'hjj', 'lqq', 'ld', 'ly', 'ym']

 

1.生成列表L=[12,22,...102]

(1)循环:

L = []
>>> for x in range(1,11):
    L.append(x*x)

    
>>> L
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

(2)列表生成:

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

for 后加 if 筛出偶数元素取平方:

>>> list(x*x for x in range(1,11) if x%2 ==0)
[4, 16, 36, 64, 100]

 

2.两层循环生成全排列:

>>> list(m + n for n in 'XYZ' for m in 'ABC')
['AX', 'BX', 'CX', 'AY', 'BY', 'CY', 'AZ', 'BZ', 'CZ']

 

3.for循环多个变量:例 dict的items()可以同时迭代key和value:

>>> d = {'x':'A','y':'B','z':'C'}
>>> for k,v in d.items():
    print(k,'=',v)

    
y = B
z = C
x = A

列表生成式使用两个变量生成列表:

>>> d = {'x':'A','y':'B','z':'C'}
>>> [k + '=' + v for k,v in d.items()]
['y=B', 'z=C', 'x=A']

 

4.列表内所有字符串小写:

>>> L = ['LR','YM','LY']
>>> list(s.lower() for s in L)
['lr', 'ym', 'ly']

 

isinstance函数判断变量类型:

>>> X = 'ABC'
>>> Y = 123
>>> isinstance(X,str)
True

  >>> isinstance(Y,int)
  True

 

list内所有大写字符串小写:

>>> L =['LR','LY',1024,'YM']
>>> [s.lower() for s in L]
Traceback (most recent call last):
  File "<pyshell#31>", line 1, in <module>
    [s.lower() for s in L]
  File "<pyshell#31>", line 1, in <listcomp>
    [s.lower() for s in L]
AttributeError: 'int' object has no attribute 'lower'  非字符串类型没有lower方法
>>> [s.lower() for s in L if isinstance(s,str)]
['lr', 'ly', 'ym']

 

posted @ 2016-11-04 11:46  sniperlr  阅读(108)  评论(0)    收藏  举报