部分来源《python学习手册 》第四版
一、python列表的主要属性:
1)任意对象的有序集合
2)通过偏移量读取
3)可变长度,异构以及任意嵌套
4)属于可变序列分类
5)对象引用数组
In [2]: d = ['a','b']
In [6]: a
Out[6]: [1, 2, 3, 4, 'a', 'b']
In [7]: a[0] =d
In [8]: a
Out[8]: [['c', 'b'], 2, 3, 4, 'a', 'b']
In [9]: d[0]='e'
In [10]: a
Out[10]: [['e', 'b'], 2, 3, 4, 'a', 'b']
二、常见列表常量和操作:
L = [] #一个空的列表
L = ['a','b','c','d'] #新建一个列表,索引为从左往右为0,1,2,3
L = ['abc',['a','b']] #嵌套列表
L = list("spam") #将字符串转化为列表,结果为['s','p','a','m']
L[i]
L[i][j]
L[i:j]
len(L)
L1+L2 #合并
L*3 #重复
for x in L:print x #迭代,成员关系
L.append(4) #方法4
L.extend([1,2,3,4]) #方法同加号
L.insert(i,x) #在原有L[i]前插入x
L.index(x) #查x的元素的索引,结果只为第一次匹配到x的。
L.count(x) #统计L中x元素的个数,非常有用。
L.sort()
如果需要一个排序好的副本,同时保持原有列表不变,怎么实现呢
x =[4, 6, 2, 1, 7, 9]
y = x[ : ]
y.sort()
print y #[1, 2, 4, 6, 7, 9]
print x #[4, 6, 2, 1, 7, 9]
注意:y = x[:] 通过分片操作将列表x的元素全部拷贝给y,
另一种获取已排序的列表副本的方法是使用sorted函数:
另一种获取已排序的列表副本的方法是使用sorted函数:
x =[4, 6, 2, 1, 7, 9]
y = sorted(x)
print y #[1, 2, 4, 6, 7, 9]
print x #[4, 6, 2, 1, 7, 9]
sorted返回一个有序的副本,并且类型总是列表,如下:
print sorted('Python') #['P', 'h', 'n', 'o', 't', 'y']
L.reverse() #反转,即倒序。 类似 L[::-1],但这种不会改变原有序列。
del L[k] #删除索引为k的元素
del L[i:j] #包含L[i],但不包含L[j] 。 [i,j)
L.pop() #最后一个元素删除
L[i:j] = []
L.remove(x) #删除L中值为x的元素。从左往右,只删除一个
L[i:j] = [4,5,6] #
列表是支持原地修改的。
1)
L.append(x)和L+[x]的区别:
>>> b = [1,2,3,4]
>>> a = [5,6,7,8]
>>> b.append('a')
>>> b
[1, 2, 3, 4, 'a']
>>> b+a
[1, 2, 3, 4, 'a', 5, 6, 7, 8]
>>> b
[1, 2, 3, 4, 'a']
2)sort的应用
>>> L = ['abc','ABD','aBe']
>>> L.sort()
>>> L
['ABD', 'aBe', 'abc']
>>> L.sort(key=str.upper)
>>> L
['abc', 'ABD', 'aBe']
>>> L.sort(key=str.lower)
>>> L
['abc', 'ABD', 'aBe']
>>> L.sort(key=str.lower,reverse=True)
>>> L
['aBe', 'ABD', 'abc']
列表解析:
常见for循环:
>>> for x in range(2):
... L.append(x)
...
>>> L
[0, 1]
列表解析表达式:
>>> [x for x in range(2)]
[0, 1]
题外话:python的三元运算符a?b:c的python实现:
>>> 1 if 5>3 else 0
匿名函数:lambda表达式
lambda arg1,arg2,arg3,…argN : expression using args
>>> f = lambda x,y,z:x+y+z
>>> f(1,2,3)
6
>>> f = lambda x=1,y=2,z=3:x+y+z
>>> f(2)
7
在序列中映射函数:map
>>> def inc(x): return x+10
...
>>> map(inc,[1,2,3,4])
[11, 12, 13, 14]
>>> map((lambda x:x+3),[1,2,3])
[4, 5, 6]
列表排序:
参考如下:
https://www.cnblogs.com/whaben/p/6495702.html
1)key参数/函数
按key来排序
>>> student_tuples = [
('john', 'A', 15),
('jane', 'B', 12),
('dave', 'B', 10),
]
>>> sorted(student_tuples, key=lambda student: student[2]) # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
#sort
>>> s = [('a',12),('b',32),('c',3)]
>>> s.sort(key=lambda k:k[1])
>>> s
[('c', 3), ('a', 12), ('b', 32)]
矩阵的转置
https://www.cnblogs.com/anpengapple/p/5427367.html
由:2*3 —>3*2
>>> b
[(1, 2), (3, 4), (5, 6)]
>>> zip(*b)
[(1, 3, 5), (2, 4, 6)]