创建列表
- a=[]
- a=[10,‘hello’]
- list()将其他数据格式转化为列表
- range([start],end,[step])创建整数列表,class:range.
#循环创建多个元素
>>> a=[x*2 for x in range(10)]
>>> a
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
#if语句控制过滤
>>> a=[x*2 for x in range(10) if x%3==1]
>>> a
[2, 8, 14]
列表增删
- append()尾部添加元素
>>> a=[1,2,3]
>>> id(a)
4384093760
>>> a.append([12,3,'hello'])
>>> a
[1, 2, 3, [12, 3, 'hello']]
>>> id(a)
4384093760
- +添加,创建新的对象
>>> a=[1,2,3]
>>> id(a)
4487682240
>>> a=a+[12,3,'hello']
>>> a
[1, 2, 3, 12, 3, 'hello']
>>> id(a)
4384093760
- extend()原地添加其他列表的元素
>>> a=[1,2,3]
>>> id(a)
4487683392
>>> a.extend([12,3,'hello'])
>>> a
[1, 2, 3, 12, 3, 'hello']
>>> id(a)
4487683392
- insert()元素插入指定位置,后面元素的后移
>>> a=[1,2,3]
>>> a.insert(2,'hello')
>>> a
[1, 2, 'hello', 3]
- 乘法扩展
列表元素删除
- del 删除指定位置元素,后面元素的前移
>>> a=[1,2,3]
>>> del a[0]
>>> a
[2, 3]
- pop()默认弹出最后一个元素
>>> a=[1,2,3]
>>> a.pop()
3
>>> a
[1, 2]
>>> a.pop(0)
1
>>> a
[2]
>>> a=[1,2,3]
>>> b=a.pop(1)
>>> b
2
- remove()删除首次出现的指定元素
>>> a=[1,2,3,2]
>>> a.remove(2)
>>> a
[1, 3, 2]
>>> a.remove(6)
Traceback (most recent call last):
File "<pyshell#46>", line 1, in <module>
a.remove(6)
ValueError: list.remove(x): x not in list
元素搜索、计数
- index()
语法:index(value,[start,[end]])
>>> a=[1,2,3,2,7,9,3,88,6,3]
>>> a.index(3)
2
>>> a.index(3,3)
6
>>> a.index(3,7)
9
>>> a.index(3,4,9)
6
- count()指定元素出现次数
>>> a
[1, 2, 3, 2, 7, 9, 3, 88, 6, 3]
>>> a.count(3)
3
- len()列表长度
>>> a
[1, 2, 3, 2, 7, 9, 3, 88, 6, 3]
>>> len(a)
10
- 是否存在
in 或者 count()
>>>> a
[1, 2, 3, 2, 7, 9, 3, 88, 6, 3]
>>> 9 in a
True
>>> 10 in a
False
>>> a.count(10)
0
>>> a.count(9)
1
切片操作
- [start:end[:step]]
>>> a
[1, 2, 3, 2, 7, 9, 3, 88, 6, 3]
>>> a[2:]
[3, 2, 7, 9, 3, 88, 6, 3]
>>> a[2:8]
[3, 2, 7, 9, 3, 88]
>>> a[2:8:3]
[3, 9]
>>> a[-2:]
[6, 3]
>>> a[-3:-2]
[88]
>>> a[-6:-2]
[7, 9, 3, 88]
列表遍历
for x in list:
print(x)
>>> a
[1, 2, 3, 2, 7, 9, 3, 88, 6, 3]
>>> for x in a:
print(x)
1
2
3
2
7
9
3
88
6
3
列表排序sort()
sort()不创建新对象
>>> a
[1, 2, 3, 2, 7, 9, 3, 88, 6, 3]
>>> a.sort()
>>> a
[1, 2, 2, 3, 3, 3, 6, 7, 9, 88]
>>> a.sort(reverse=True)
>>> a
[88, 9, 7, 6, 3, 3, 3, 2, 2, 1]
>>> import random
>>> random.shuffle(a)
>>> a
[3, 88, 2, 1, 6, 3, 9, 3, 2, 7]
- sorted()创建新对象,默认升序,不修改原有对象
>>> a
[3, 88, 2, 1, 6, 3, 9, 3, 2, 7]
>>> id(a)
4376919744
>>> sorted(a)
[1, 2, 2, 3, 3, 3, 6, 7, 9, 88]
>>> id(a)
4376919744
>>> a
[3, 88, 2, 1, 6, 3, 9, 3, 2, 7]
>>> sorted(a,reverse=True)
[88, 9, 7, 6, 3, 3, 3, 2, 2, 1]
>>> a
[3, 88, 2, 1, 6, 3, 9, 3, 2, 7]
>>> id(a)
4376919744
- reversed()返回迭代器
迭代器只能用1次,时间换空间。
>>> a
[3, 88, 2, 1, 6, 3, 9, 3, 2, 7]
>>> c = reversed(a)
>>> c
<list_reverseiterator object at 0x10b7e5310>
>>> list(c)
[7, 2, 3, 9, 3, 6, 1, 2, 88, 3]
>>> list(c)
[]
- max() min() sum()
>>> a
[3, 88, 2, 1, 6, 3, 9, 3, 2, 7]
>>> max(a)
88
>>> min(a)
1
>>> sum(a)
124
>>> b=[1,3,hello]
Traceback (most recent call last):
File "<pyshell#109>", line 1, in <module>
b=[1,3,hello]
NameError: name 'hello' is not defined
二维列表
>>> a=[["高小一",18,30000,"北京"], ["高小二",19,20000,"上海"], ["高小一",20,10000,"深圳"],]
>>> a[2][2]
10000
>>> a[1][3]
'上海'
>>> for m in range(3):
for n in range(4):
print(a[m][n],end="\t")
print()
高小一 18 30000 北京
高小二 19 20000 上海
高小一 20 10000 深圳
元组tuple
列表属于可变序列,可任意修改。而元组是不可变序列,定义之后就不能修改。
- ()小括号创建元组
>>> a=(1,2,3)
>>> a
(1, 2, 3)
>>> type(a)
<class 'tuple'>
>>> b=(1)
>>> type(b)
<class 'int'>
>>> c=(1,)
>>> type(c)
<class 'tuple'>