1.列表
liebiao = ['编号89757','石景文','David','Bob',45,66]
len(liebiao)
6
用索引来访问list中每一个位置的元素,索引是从0开始的
liebiao[1]
'石景文'
liebiao[-1]
66
liebiao[5]
66
1)引用传递 将不同列表指向同一个列表
lie1 = [1,2,3,4]
lie2 = lie1
lie2
[1, 2, 3, 4]
2)分片 隔开的两个索引来实现。如果提供两个索引作为边界,则第1个索引的元素包含在分片内,而第2个则不包含在分片内
要点:左闭右开
liebiao[:]
['编号89757', '徐超', 'David', 'Bob', 45, 66]
liebiao[2:4]
['David', 'Bob']
liebiao[:3]
['编号89757', '徐超', 'David']
liebiao[2:]
['David', 'Bob', 45, 66]
3)序列相加
list1 = [1,2,3,4]
list2 = [2,3,3,3]
list1 + list2
[1, 2, 3, 4, 2, 3, 3, 3]
4)成员资格
liebiao
['编号89757', '徐超', 'David', 'Bob', 45, 66]
45 in liebiao
True
5)长度、最大值、最小值(len、min、max)
ll = ['编号89757', '徐超', 'David', 'Bob', '45', '66']
max(ll)
'编号89757'
min(ll)
'45'
len(ll)
6
6)删除元素与分片赋值
lizi = list('jskajnsckarituwpo')
del lizi[3:]
lizi
['j', 's', 'k']
lizi[3:]=list('2w74r7')
lizi
['j', 's', 'k', '2', 'w', '7', '4', 'r', '7']
del lizi[4:]
lizi
['j', 's', 'k', '2']
lizi[2:]=list('2333')
lizi
['j', 's', '2', '3', '3', '3']
7)内置函数
enumerate函数
for x in enumerate(lizi):
print(x)
(0, 'j')
(1, 's')
(2, '2')
(3, '3')
(4, '3')
(5, '3')
sorted函数
lizi3 = [5,3,21,45,7,56,2,33,90]
sorted(lizi3)
[2, 3, 5, 7, 21, 33, 45, 56, 90]
sorted(lizi3,reverse=True)
[90, 56, 45, 33, 21, 7, 5, 3, 2]
zip函数
guojia = ['china','USA','riben','deguo']
qidu = ['yazhou','meizhou','dongya','ouzhou']
list(zip(guojia,qidu))
[('china', 'yazhou'),
('USA', 'meizhou'),
('riben', 'dongya'),
('deguo', 'ouzhou')]
8)列表方法
append 在列表末尾追加新的元素,不返回值
lbff = ['编号89757','徐超','David','Bob','45',66,'尼克里森']
lbff
['编号89757', '徐超', 'David', 'Bob', '45', 66, '尼克里森']
lbff.append('王朝马汉')
lbff
['编号89757',
'徐超',
'David',
'Bob',
'45',
66,
'尼克里森',
'王朝马汉',
'王朝马汉',
'王朝马汉',
'王朝马汉']
count 统计某个元素在列表中出现的次数,返回值
lbff.count('王朝马汉')
4
extend 在列表的末尾一次性追加另一个列表中的多个值,不返回值
ex = ['zhang heng','taobao']
lbff.extend(ex)
lbff
['编号89757',
'徐超',
'David',
'Bob',
'45',
66,
'尼克里森',
'王朝马汉',
'王朝马汉',
'王朝马汉',
'王朝马汉',
'zhang heng',
'taobao',
'zhang heng',
'taobao']
index 从列表中找出某个值第一个匹配项的索引位置,返回值
lbff.index('王朝马汉')
7
insert 将对象插入到列表中,不返回值
lbff.insert(3,'WORD')
lbff
['编号89757',
'PPT',
'徐超',
'WORD',
'David',
'Bob',
'45',
66,
'尼克里森',
'王朝马汉',
'王朝马汉',
'王朝马汉',
'王朝马汉',
'zhang heng',
'taobao',
'zhang heng',
'taobao']
pop 移除列表中的一个元素(默认最后一个),返回该元素的值
lbff.pop()
lbff
['编号89757',
'PPT',
'徐超',
'WORD',
'David',
'Bob',
'45',
66,
'尼克里森',
'王朝马汉',
'王朝马汉',
'王朝马汉',
'王朝马汉']
sort 在原位置对列表进行排序,不返回值
shulie = [5,3,233,666,21,45,7,56,2,33,90]
shulie.sort(reverse=True)
shulie
[666, 233, 90, 56, 45, 33, 21, 7, 5, 3, 2]
2.元组
tuple
yz = tuple('pltgmmdhcnsk')
yz
('p', 'l', 't', 'g', 'm', 'm', 'd', 'h', 'c', 'n', 's', 'k')
元组拆包(unpacking): 对元组型变量表达式进行赋值,Python会尝试将“=”右侧的值进行拆包
country = tuple(guojia)
country
('china', 'USA', 'riben', 'deguo')
x1,x2,x3,x4 = country
x4
'deguo'
country.count('china')
1
3.字典
使用键-值(key-value)存储,具有极快的查找速度。
字典使用“{ }”用“:”分隔键和值并用“,”分隔项来定义。
注意:字典中的键是唯一,值不一定是唯一的
zidian = {'迈克尔':'66','孙尚香':'78','李白':'88','始皇帝':'94','贞德':'81'} zidian
{'始皇帝': '94', '孙尚香': '78', '李白': '88', '贞德': '81', '迈克尔': '66'}
字典的操作
1)len() 返回d中项(键-值对)的数量
len(zidian)
5
2)zidian[k] 返回关联到键k上的值
zidian['李白']
'88'
3)zidian[k]=v 将值v关联到键k上
zidian['贞德'] = 86
zidian
{'始皇帝': '94', '孙尚香': '78', '李白': '88', '贞德': 86, '迈克尔': '66'}
4)del zidian[k] 删除键为k的项
del zidian['迈克尔'] #如果用del zidian['94']就会报错,为什么? zidian
5)k in zidian 检查zidian中是否含有键k的项
zidian
{'始皇帝': '94', '孙尚香': '78', '李白': '88', '贞德': 86}
'孙尚香' in zidian
True
字典的特性
1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住
zidian2 = {'张龙':'66','赵虎':'55','赵虎':'71','王朝':'77','马汉':'74','展昭':'88'} zidian2
{'展昭': '88', '张龙': '66', '王朝': '77', '赵虎': '71', '马汉': '74'}
2)键必须不可变,所以可以用数、字符串或元组充当,用列表就不行
zidian3 = {'包青天':'92','三廉王':'87',['赵贞']:'44'} zidian3
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-101-2435c3b44439> in <module>() ----> 1 zidian3 = {'包青天':'92','三廉王':'87',['赵贞']:'44'} 2 3 zidian3
TypeError: unhashable type: 'list'