序列:每个元素都有编号(即位置或索引),第一个位置的索引为0,也可以由末尾反向取索引,从-1开始。 列表、元组和字符串都是序列。
散列:元素无编号(无序的),比如 字典和 集合。
列表和元组的差异
列表 | 元组 |
---|---|
可修改 | 不可修改 |
[‘a’,‘b’,‘c’] | (‘a’,‘b’,‘c’) |
通用的序列操作
索引和切片
>>> name='Sudley'
>>> name[0]
'S'
>>> name[-1]
'y'
>>> name[0:]
'Sudley'
>>> name[:]
'Sudley'
>>> name[4:]
'ey'
>>> name[:-3]
'Sud'
>>>
上面的切片中默认步长为1,我们可以自定义步长,但是需要注意步长不能为0
>>> name[0::2]
'Sde'
>>> name[0:5:2]
'Sde'
>>> name[0:4:2]
'Sd'
>>> name[4:0:2]
''
>>> name[4:0:-2]
'ed'
>>>
序列相加、相乘
>>> [1,2,3]*3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
>>> [1,2,3] + ['4','5','6'] #一般而言不建议拼接不同类型的序列
[1, 2, 3, '4', '5', '6']
>>>
成员资格
>>> 'Su' in 'Sudley'
True
>>> db = [
['Sudley','111111'],
['root','123456'],
]
>>> u='Sudley'
>>> p='123456'
>>> [u,p] in db
False
>>> p='111111'
>>> [u,p] in db
True
>>>
长度、最大值和最小值
>>> num = ['a','b','c']
>>> len(num)
3
>>> min(num)
'a'
>>> max(num)
'c'
>>>
列表
列表方法
方法 | 描述 |
---|---|
alist.append(obj) | 追加元素,等同于alist[len(alist):len(alist)] = [obj] |
alist.clear() | 删除alist所有元素 |
alist.count(obj) | 返回alist中与obj相等的元素个数 |
alist.copy() | 返回alist的副本,注意是浅复制 |
alist.extend(sequence) | 等同于alist[len(alist):len(alist)] = sequence |
alist.index(obj) | 返回第一个与obj相等的元素的索引,如果没有则触发ValueError异常 |
alist.insert(index,obj) | 在index索引左边插入obj;如果index > 0,就等同于alist[index:index] = [obj] |
alist.pop([index]) | 删除并返回指定索引(默认是-1) |
alsit.remove(obj) | 等同于del alist[alist.index(obj)] |
alsit.reverse() | 就地以相反的顺序排列列表的元素 |
alist.sort([cmp][,key][,reverse]) | 就地对alist的元素进行排序(稳定排序)。可通过提供比较函数cmp、键值数key(创建用户排序的键)和降序标志reverse(一个布尔值)进行定制 |
浅复制相关概念可参考
【Python基础9】浅谈深浅拷贝及变量赋值
基本操作
>>> x = [1,2] #列表赋值
>>> x[1] = 3
>>> x
[1, 3]
>>> name = list('Sudley') #列表和字符串之间的转换
>>> name
['S', 'u', 'd', 'l', 'e', 'y']
>>> str(name)
"['S', 'u', 'd', 'l', 'e', 'y']"
>>> for i in range(0,len(name)):
name1 = name1 + name[i]
>>> name1
'Sudley'
>>> name[5:] = list('eee') #切片赋值,可以实现插入或删除列表元素
>>> name
['S', 'u', 'd', 'l', 'e', 'e', 'e', 'e']
>>> name[0:5] = []
>>> name
['e', 'e', 'e']
>>> del name[1:]
>>> name
['e']
>>>
列表方法
>>> #列表末尾追加元素
>>> num = [1,2]
>>> num.append(3)
>>> num
[1, 2, 3]
>>> num = [1,[1,2,3],2,3]
>>> num2 = num.copy()
>>> num[1][1] = 11
>>> num2
[1, [1, 11, 3], 2, 3]
>>> num[0] = 0
>>> num
[0, [1, 11, 3], 2, 3]
>>> num2
[1, [1, 11, 3], 2, 3]
>>>
>>> #列表拷贝
>>>> num = [1, 2, 3]
>>> num1 = num
>>> num2 = num.copy()
>>> num3 = num[:]
>>> num[1] = 'a'
>>> num
[1, 'a', 3]
>>> num1
[1, 'a', 3]
>>> num2
[1, 2, 3]
>>> num3
[1, 2, 3]
>>> #元素计数
>>> num = [[1,2],1,1,[2,1,[1,2]]]
>>> num.count(1)
2
>>> num.count([1,2])
1
>>> #列表扩展
>>> a = [1,2]
>>> b = [3,4]
>>> a + b
[1, 2, 3, 4]
>>> a
[1, 2]
>>> a.extend(b)
>>> a
[1, 2, 3, 4]
>>> a.append(b)
>>> a
[1, 2, 3, 4, [3, 4]]
>>> #索引,只查找第一个出现的索引
>>> a.index(3)
2
>>> a.index([3,4])
4
>>> a.append(3)
>>> a.index(3)
2
>>> a
[1, 2, 3, 4, [3, 4], 3]
>>>#插入对象
>>> a.insert(2,2.5)
>>> a
[1, 2, 2.5, 3, 4, [3, 4], 3]
>>> a.insert(4,3.5)
>>> a
[1, 2, 2.5, 3, 3.5, 4, [3, 4], 3]
>>> a.insert(-2,22)
>>> a
[1, 2, 2.5, 3, 3.5, 4, 22, [3, 4], 3]
>>>
>>>#删除元素
>>> a.pop()
3
>>> a.pop(0)
1
>>>
>>> a
[2, 2.5, 3, 3.5, 4, [3, 4]]
>>> a.append(a.pop())
>>> a
[2, 2.5, 3, 3.5, 4, [3, 4]]
>>> a[1] = 2
>>> a
[2, 2, 3, 3.5, 4, [3, 4]]
>>> a.remove(2)
>>> a
[2, 3, 3.5, 4, [3, 4]]
>>>#排序
>>> a = [1,3,2]
>>> a.reverse()
>>> a
[2, 3, 1]
>>> a.sort()
>>> a
[1, 2, 3]
>>> a.reverse()
>>> a
[3, 2, 1]
>>>#常见错误
>>> b = a.sort()
>>> a
[1, 2, 3]
>>> b
>>> b = a.pop(1) #pop()是唯一即修改列表又返回非None值的列表方法
>>> b
2
>>>
元组
元组最大的特点是不能修改,一般用作字典的键
>>> a = (1,2)
>>> a[0]
1
>>> a[0] = 2
Traceback (most recent call last):
File "<pyshell#91>", line 1, in <module>
a[0] = 2
TypeError: 'tuple' object does not support item assignment
>>> a
(1, 2)
>>> a = 1,2
>>> a
(1, 2)
>>> a = 1,
>>> a
(1,)
>>> a = (1) #元组的括号可以省略但是逗号不能省略
>>> a
1
>>> type(a)
<class 'int'>
>>> a = (1,)
>>> type(a)
<class 'tuple'>
>>> a
(1,)
>>>