列表
序列中的每个值都有对应的位置值,称之为索引,第一个索引是 0,第二个索引是 1,依此类推。
列表都可以进行的操作包括索引,切片,加,乘,检查成员。
列表是最常用的 Python 数据类型,它可以作为一个方括号内的逗号分隔值出现。
列表的数据项不需要具有相同的类型。
ls = ['h', 'e', 'l', 'l', 'o'] #创建一个列表
print("打印列表值:")
print(ls[0])
print(ls[2])
print(ls[4])
print("从第二位开始(包含)截取到倒数第二位(不包含):")
print ("ls[1:-2]: ", ls[1:-2])
控制台:
打印列表值:
h
l
o
从第二位开始(包含)截取到倒数第二位(不包含):
ls[1:-2]: ['e', 'l']
更新列表以及删除元素:
ls = ['h', 'e', 'l', 'l', 'o'] # 创建一个列表
print("第三个元素:", ls[2])
ls[2] = 'o'
print("更新后第三个元素:", ls[2])
print("原列表:", ls)
ls.append('w')
print("更新后:", ls)
del ls[5]
print("删除第6个元素后的列表:", ls)
控制台:
第三个元素: l
更新后第三个元素: o
原列表: ['h', 'e', 'o', 'l', 'o']
更新后: ['h', 'e', 'o', 'l', 'o', 'w']
删除第6个元素后的列表: ['h', 'e', 'o', 'l', 'o']
脚本操作符
ls=[1,2,3]
print("ls的长度:",len(ls))
ls1=ls+[4,5,6]
print("合并后的列表:",ls1)
ls2=["x"]*4
print("重复多次元素的列表:",ls2)
print("列表迭代:")
for x in [2,3,4]:
print(x)
控制台:
ls的长度: 3
合并后的列表: [1, 2, 3, 4, 5, 6]
重复多次元素的列表: ['x', 'x', 'x', 'x']
列表迭代:
2
3
4
拼接与截取
ls = ["Dio", "Jotaro", "Joestar"]
print("第三个元素:", ls[2])
print("倒数第二个元素", ls[-2])
print("第二个元素后所有元素:", ls[1:])
ls1 = ls + ["Diablo"]
print("拼接后的新列表:", ls1)
控制台:
第三个元素: Joestar
倒数第二个元素 Jotaro
第二个元素后所有元素: ['Jotaro', 'Joestar']
拼接后的新列表: ['Dio', 'Jotaro', 'Joestar', 'Diablo']
嵌套列表与比较
嵌套:
ls=['a','b','c']
ls1=[1,2,3]
ls2=[ls,ls1]
print(ls2[0])
print(ls2[1][2])
控制台:
['a', 'b', 'c']
3
比较:
import operator as op # 需要导入模块
a = [1, 2]
b = [2, 3]
c = [2, 3]
print("a=b:", op.eq(a, b))
print("b=c:", op.eq(b, c))
控制台:
a=b: False
b=c: True
函数方法
1
list.append(obj)
在列表末尾添加新的对象2
list.count(obj)
统计某个元素在列表中出现的次数3
list.extend(seq)
在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)4
list.index(obj)
从列表中找出某个值第一个匹配项的索引位置5
list.insert(index, obj)
将对象插入列表6
list.pop([index=-1])
移除列表中的一个元素(默认最后一个元素),并且返回该元素的值7
list.remove(obj)
移除列表中某个值的第一个匹配项8
list.reverse()
反向列表中元素9
list.sort( key=None, reverse=False)
对原列表进行排序10
list.clear()
清空列表11
list.copy()
复制列表12
len(list)
列表元素个数13
max(list)
返回列表元素最大值14
min(list)
返回列表元素最小值15
list(seq)
将元组转换为列表
元组
元组与列表类似,不同之处在于元组的元素不能修改。
元组使用小括号 ( ),列表使用方括号 [ ]。
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
tup1=("Dio", "Jotaro", "Joestar")
tup2=(1,2,3)
tup3='W','E','F' #不需要括号也可以
print(type(tup3))
tup4=(60) #元组中只包含一个元素时,需要在元素后面添加逗号 , ,否则括号会被当作运算符使用
print(type(tup4))
tup5=(60,)
print(type(tup5))
控制台:
<class 'tuple'>
<class 'int'>
<class 'tuple'>
访问 修改 删除
print("元组可以使用下标索引来访问元组中的值")
tup1=("Dio", "Jotaro", "Joestar")
tup2=(2,4,6)
print("tup1[2]:",tup1[1])
print("tup2[0:2]:",tup2[0:2])
print()
print("元组中的元素值是不允许修改的,但我们可以对元组进行连接组合")
tup3=tup1+tup2
print(tup3)
print()
print("元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组")
print(tup2)
del tup2
print("删除后的元组tup2:",tup2)
控制台:
元组可以使用下标索引来访问元组中的值
tup1[2]: Jotaro
tup2[0:2]: (2, 4)
元组中的元素值是不允许修改的,但我们可以对元组进行连接组合
('Dio', 'Jotaro', 'Joestar', 2, 4, 6)
元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组
(2, 4, 6)
Traceback (most recent call last):
File "C:\MySpace\MyCode\PyCode\list.py", line 14, in <module>
print("删除后的元组tup2:",tup2)
NameError: name 'tup2' is not defined
这里删除后出现报错。
元组运算符
tup0=(1,2,3)
print(len(tup0))
tup1=(4,5,6)
print("tup1+tup0:",tup1+tup0)
tup2=(7,8,9)
tup2+=tup1
print("tup2+=tup1:",tup2)
print("('hi',)*3:",('hi',)*3)
print("3 in(1,2,3):",3 in (1,2,3))
控制台:
3
tup1+tup0: (4, 5, 6, 1, 2, 3)
tup2+=tup1: (7, 8, 9, 4, 5, 6)
('hi',)*3: ('hi', 'hi', 'hi')
3 in(1,2,3): True
内置函数
len(tuple)
计算元组元素个数。max(tuple)
返回元组中元素最大值。min(tuple)
返回元组中元素最小值。tuple(iterable)
将可迭代系列转换为元组。
tup0=(2,4,6)
print(max(tup0))
print(min(tup0))
print(len(tup0))
ls=['h','w','e']
tup1=tuple(ls)
print(tup1)
控制台:
6
2
3
('h', 'w', 'e')
字典
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中。
键必须是唯一的,但值则不必。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字。
创建字典
#使用大括号 { } 创建空字典:
dic1={'a':'A','b':'B','c':'C'}
print(dic1)
print(len(dic1))
print(type(dic1))
#使用内建函数 dict() 创建字典
dic2=dict()
print(dic2)
print(len(dic2))
print(type(dic2))
控制台:
{'a': 'A', 'b': 'B', 'c': 'C'}
3
<class 'dict'>
{}
0
<class 'dict'>
访问 修改 删除
如果用字典里没有的键访问数据,会输出错误
dic1 = {'a': 'A', 'b': 'B', 'c': 'C'}
print("dic1['b']:'", dic1['b'])
print("修改:")
dic1['b'] = 'BB' # 修改
dic1['d'] = 'D' # 添加
print(dic1)
print("删除:")
del dic1['b'] # 删除键
print(dic1)
dic1.clear() # 情况
print(dic1)
del dic1 # 删除字典
控制台:
dic1['b']:' B
修改:
{'a': 'A', 'b': 'BB', 'c': 'C', 'd': 'D'}
删除:
{'a': 'A', 'c': 'C', 'd': 'D'}
{}
特性
字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。
不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住:
dic1 = {'a': 'A', 'b': 'B', 'b': 'C'}
print("dic1['b']:'", dic1['b'])
控制台:
dic1['b']:' C
键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行:
dic1={['a']:'A','w':'W'}
控制台:
Traceback (most recent call last):
File "C:\MySpace\MyCode\PyCode\dic.py", line 1, in <module>
dic1={['a']:'A','w':'W'}
TypeError: unhashable type: 'list'
内置函数
1
dict.clear()
删除字典内所有元素2
dict.copy()
返回一个字典的浅复制3
dict.fromkeys()
创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值4
dict.get(key, default=None)
返回指定键的值,如果键不在字典中返回 default 设置的默认值5
key in dict
如果键在字典dict里返回true,否则返回false6
dict.items()
以列表返回一个视图对象7
dict.keys()
返回一个视图对象8
dict.setdefault(key, default=None)
和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default9
dict.update(dict2)
把字典dict2的键/值对更新到dict里10
dict.values()
返回一个视图对象11
pop(key[,default])
删除字典 key(键)所对应的值,返回被删除的值。12
popitem()
返回并删除字典中的最后一对键和值。
集合
集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
set1 = {'h', 'e', 'l', 'l', 'o'}
print(set1) # 去重
print('o' in set1) # 判断元素是否在集合里
print('w' in set1)
# 集合运算
print("集合运算:")
set2 = set('helloworld')
set3 = set('hellomorn')
print(set2)
print(set3)
print("set2-set3 :", set2 - set3) # 集合set2中包含而集合set3中不包含的元素
print("set2|set3 :", set2 | set3) # 集合set2或set3中包含的所有元素
print("set2&set3 :", set2 & set3) # 集合set2和set3中都包含了的元素
print("set2^set3 :", set2 ^ set3) # 不同时包含于set2和set3的元素
控制台:
{'l', 'h', 'e', 'o'}
True
False
集合运算:
{'h', 'r', 'e', 'd', 'l', 'w', 'o'}
{'h', 'r', 'm', 'e', 'n', 'l', 'o'}
set2-set3 : {'d', 'w'}
set2|set3 : {'h', 'r', 'm', 'e', 'd', 'n', 'l', 'w', 'o'}
set2&set3 : {'h', 'r', 'e', 'l', 'o'}
set2^set3 : {'m', 'd', 'n', 'w'}
操作
s1=set('ape')
print(s1)
s1.add('w')#添加
print(s1)
s1.update({2,3})
print(s1)
s1.update([2,4],[5,6])
print(s1)
控制台:
{'a', 'p', 'e'}
{'a', 'w', 'p', 'e'}
{'a', 2, 3, 'e', 'w', 'p'}
{2, 3, 4, 5, 'e', 6, 'p', 'a', 'w'}
s1 = set('abcdef')
print(s1)
s1.remove('b') # 移除
print(s1)
s1.discard('f')
print(s1)
s1.pop() # 随机删除
print(s1)
控制台:
{'d', 'e', 'f', 'b', 'c', 'a'}
{'d', 'e', 'f', 'c', 'a'}
{'d', 'e', 'c', 'a'}
{'e', 'c', 'a'}
内置函数
add()
为集合添加元素
clear()
移除集合中的所有元素
copy()
拷贝一个集合
difference()
返回多个集合的差集
difference_update()
移除集合中的元素,该元素在指定的集合也存在。
discard()
删除集合中指定的元素
intersection()
返回集合的交集
intersection_update()
返回集合的交集。
isdisjoint()
判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
issubset()
判断指定集合是否为该方法参数集合的子集。
issuperset()
判断该方法的参数集合是否为指定集合的子集
pop()
随机移除元素
remove()
移除指定元素
symmetric_difference()
返回两个集合中不重复的元素集合。
symmetric_difference_update()
移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
union()
返回两个集合的并集
update()
给集合添加元素