一、列表
1.定义
列表 是一种用于保存一系列有序项目的集合,
使用方括号,元素用逗号隔开
列表 是一种可变的数据类型
可存储Python中的一切对象
2.创建列表
#创建列表
>>> list1 = ['apple', 'mango', 'carrot', 'banana']
>>> list1
['apple', 'mango', 'carrot', 'banana']
>>> list2 = []
>>> list2
[]
>>> list3 = [list1,list2]
>>> list3
['apple', 'mango', 'carrot', 'banana'], []]
3.向列表添加元素
要向列表中添加元素,可以使用列表的一些内置方法:append()、extend()、insert()
# append()在列表末尾添加一个元素
>>> list1=[]
>>> list2=[1,2,3,4]
>>> list3=['a','b','c','d']
>>> list1.append(1)
>>> list1
[1]
>>> list2.append('a')
>>> list2
[1, 2, 3, 4, 'a']
>>> list3.append(list2)
>>> list3
['a', 'b', 'c', 'd', [1, 2, 3, 4, 'a']]
# extend() 函数用于在列表末尾一次性追加另一个序列中的多个值(可以用元组,列表,集合)
>>> list3.extend(list2) # 对比一下于用append()方法有何不同
>>> list3
['a', 'b', 'c', 'd', [1, 2, 3, 4, 'a'], 1, 2, 3, 4, 'a']
>>> list1.extend((1,2,3,4))
>>> list1
[1, 1, 2, 3, 4]
>>> list1.extend({5,6,7,8})
>>> list1
[1, 1, 2, 3, 4, 8, 5, 6, 7]
#insert() 函数用于将指定对象插入列表的指定位置。list.insert(index, obj)
>>> list2
[1, 2, 3, 4, 'a']
>>> list2.insert(1,2)
>>> list2
[1, 2, 2, 3, 4, 'a']
4.从列表中获取元素
可以通过元素的索引值从列表中获取单个元素
>>> list1=[1, 2, 3, 4, 8, 5]
>>> list1[3]
4
5.从列表中删除元素
三种方法remove() 、pop()、del
#remove() 函数用于移除列表中某个值的第一个匹配项。 list.remove(obj)
>>> list1=[1, 1, 2, 3, 4, 8, 5, 6, 7]
>>> list1
[1, 1, 2, 3, 4, 8, 5, 6, 7]
>>> list1.remove(2)
>>> list1
[1, 1, 3, 4, 8, 5, 6, 7]
#pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。list.pop([index=-1])
#index -- 可选参数,要移除列表元素的索引值,不能超过列表总长度,默认为 index=-1,删除最后一个列表值。
>>> list1=[1, 1, 2, 3, 4, 8, 5, 6, 7]
>>> list1.pop()
7
>>> list1
[1, 1, 2, 3, 4, 8, 5, 6]
>>> list1.pop(2)
2
>>> list1
[1, 1, 3, 4, 8, 5, 6]
>>> list1.pop(-1)
6
#del 可以直接删除列表中给的某个元素
>>> list1=[1, 1, 2, 3, 4, 8, 5, 6, 7]
>>> list1
[1, 1, 2, 3, 4, 8, 5, 6, 7]
>>> del list1[2] # 删除list1中的第2个元素
>>> list1
[1, 1, 3, 4, 8, 5, 6, 7]
二、元组
1.定义
元组(Tuple)用于将多个对象保存到一起。你可以将它们近似地看作列表,
元组使用小括号,元素用逗号隔开
元组的一大特征是不可变的
2.创建元组
>>> tup1 = (1, 2, 3, 4, 5 )
>>> tup1
(1, 2, 3, 4, 5)
>>> tup2 = "a", "b", "c", "d" # 不需要括号也可以
>>> tup2
('a', 'b', 'c', 'd')
>>> tup3=() # 创建一个空元组
>>> tup3
()
#元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用:
>>> tup1=(50)
>>> type(tup1)
<class 'int'>
>>> tup2=(50,)
>>> type(tup2)
<class 'tuple'>
3.从元组获取元素
和列表一样,从元组中获取元素可以采用索引值
>>> tup1 = ('hello', 'world',4,12,2020)
>>> tup1[0]
hello
4.元组的删除
元组不可变,即不可编辑或更改元组,但是当然可以删去元组
>>> tup1=(1,2,3,4)
>>> tup1
(1, 2, 3, 4)
>>> del tup1
>>> tup1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'tup1' is not defined
序列
列表、元组可以看作序列(Sequence)的某种表现形式
1.常用操作符
1.比较操作符(元素一定要是相同类型才可以进行比较)
>>> list1=[123]
>>> list2=[234]
>>> list1>list2
False
>>> tup1 = (1, 2, 3, 4)
>>> tup2 = (4, 5, 6, 7)
>>> tup1>tup2
False
2.连接操作符
>>> list1=[123,12]
>>> list2=[9,234]
>>> list3=list1+list2
>>> list3
[123, 12, 9, 234]
>>> tup1 = (1, 2, 3, 4)
>>> tup2 = (4, 5, 6, 7)
>>> tup3=tup1+tup2
>>> tup3
(1, 2, 3, 4, 4, 5, 6, 7)
3.重复操作符
>>> list1=[123]
>>> list2=list1*4
>>> list2
[123, 123, 123, 123]
>>> tup1 = (1, 2, 3, 4)
>>> tup2=tup1*4
>>> tup2
(1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4)
4.成员操作符
>>> list1=[1,2,3,4,5]
>>> 1 in list1
True
>>> 2 not in list1
False
>>> tup1 = (1, 2, 3, 4)
>>> 1 in tup1
True
>>> 1 not in tup1
False
2.切片操作符
list[index:endex]
在切片操作中,第一个数字(冒号前面的那位)指的是切片开始的位置,第二个数字(冒号后面的那位)指的是切片结束的位置。如果第一位数字没有指定,Python 将会从序列的起始处开始操作。如果第二个数字留空,Python 将会在序列的末尾结束操作
>>> list1 = ['apple', 'mango', 'carrot', 'banana']
>>> list1[1:3]
['mango', 'carrot']
>>> list1[:3]
['apple', 'mango', 'carrot']
>>> list1[1:]
['mango', 'carrot', 'banana']
>>> list1[1:-1]
['mango', 'carrot']
>>> list1[:-1]
['apple', 'mango', 'carrot']
还可以添加第三个数字,即步长(默认为1)
>>> list1[::1]
['apple', 'mango', 'carrot', 'banana']
>>> list1[::2]
['apple', 'carrot']
>>> list1[::3]
['apple', 'banana']
>>> list1[::-1]
['banana', 'carrot', 'mango', 'apple']
序列的主要功能是资格测试(Membership Test)(也就是使用 in 与 not in 表达式判断元素是否存在)和索引
操作(Indexing Operations),它们能够允许我们直接获取序列中的特定项目。
三、字典
1.定义
字典是一系列键—值对,是可变的。
d = {key : value1 , key2 : value2}
字典就像一本新华字典,如果你知道了要找字的拼音,你就可以在这里找到字,换言之,我们将键值(Keys)(即拼音)与值(即字)联立到一起。在这里要注意到键值必须是唯一的,即不重复的。
只能使用不可变的对象(如字符串、元组)作为字典的键值,可以使用可变或不可变的对象作为字典中的值
2.创建字典
>>> dict0 = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
>>> dict0
{'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
>>> dict1 = { 'abc': 456 }
>>> dict1
{'abc': 456}
>>> dict2 = { 'abc': 123, 98.6: 37 }
>>> dict2
{'abc': 123, 98.6: 37}
3.访问字典的值
把相应的键放入到方括号中,d[key],如下实例:
>>> dict1 = {'Name': 'Tom', 'Age': 15, 'Class': 'First'}
>>> dict1['Name']
'Tom'
>>> dict1['Age']
15
#访问字典不存在的值会出现错误
>>> dict1['score']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'score'
4.修改字典中的值
向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下所示:
>>> dict1 = {'Name': 'Tom', 'Age': 15, 'Class': 'First'}
>>> dict1
{'Name': 'Tom', 'Age': 15, 'Class': 'First'}
>>> dict1['Name']='Mike' # 修改Name的值
>>> dict1
{'Name': 'Mike', 'Age': 15, 'Class': 'First'}
>>> dict1['Score']=100 # 插入Score键值
>>> dict1
{'Name': 'Mike', 'Age': 15, 'Class': 'First', 'Score': 100}
#键不能重复,如果同一个键被赋值两次,后一个值会被记住
>>> dict2 = {'Name': 'Tom', 'Age': 7, 'Name': 'Mike'}
>>> dict1['Name']
Mike
5.字典的删除
可以删除字典中某个元素或者单个元素,或者把整个字典删除掉
>>> dict1 = {'Name': 'Tom', 'Age': 15, 'Class': 'First'}
>>> del dict1['Name'] # 删除键 'Name'
>>> dict1
{'Age': 15, 'Class': 'First'}
>>> dict1.clear() # 清空字典
>>> dict1
{}
>>> del dict1 # 删除字典
>>> dict1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'dict1' is not defined
6.字典常用的操作运算符
成员关系操作符
key in dict 如果键在字典dict里返回true,否则返回false。而key not in dict返回结果则相反
>>> dict1 = {'Name': 'Tom', 'Age': 7, 'Name': 'Mike'}
>>> 'Name' in dict1
True
>>> 'Score' not in dict1
True
四、集合
1.定义
集合(Set)是简单元素的无重复无序集合(Collection),可变的,元素可以是元组,字符串。
当集合中的项目存在与否比起次序或其出现次数更加重要时,我们就会使用集合。
2.创建集合
可以使用大括号 { } 或者 set() 函数创建集合,多个元素用{},单个元素用set()
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> basket
{'banana', 'pear', 'orange', 'apple'}
>>> basket1=set(basket)
>>>> basket1
{'banana', 'pear', 'orange', 'apple'}
3.修改集合中的值
1.向集合中添加元素
可以采用add()或者update()方法
#add()方法是将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。
>>> s=set([1,2,3,4])
>>> s.add(1)
>>> s
{1, 2, 3, 4}
>>> s.add(5)
>>> s
{1, 2, 3, 4, 5}
#用update()也可以添加元素,且参数可以是列表,元组,字典等。
>>> set((1,2,5))
{1, 2, 5}
>>> s=set([1,2,3,4])
>>> s
{1, 2, 3, 4}
>>> s.update([5,6,7,8])
>>> s
{1, 2, 3, 4, 5, 6, 7, 8}
>>> s.update((9,10,11,12))
>>> s
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
2.移除元素
移除元素用remove()、discard()、pop()、clear()、del
#remove()将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。
>>> s=set([1,2,3,4])
>>> s
{1, 2, 3, 4}
>>> s.remove(1)
>>> s
{2, 3, 4}
>>> s.remove(1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 1
#discard()也是移除集合中的元素,且如果元素不存在,不会发生错误。
>>> s=set([1,2,3,4])
>>> s
{1, 2, 3, 4}
>>> s.remove(1)
>>> s
{2, 3, 4}
>>> s.discard(1)
>>> s
{2, 3, 4}
#pop() 在脚本模式下随机删除一个元素,但在交互模式下是删除集合中的第一个元素(排序后的第一个元素)
#脚本模式
s=set([1,2,3,4])
x=s.pop()
print(x)
#输出结果
python test.py
1
#每次结果都不相同
#交互模式下
>>> s=set([5,8,9,3,4])
>>> s
{3, 4, 5, 8, 9}
>>> s.pop()
3
#clear() 清空集合中的元素
>>> s=set([1,5,6,3,2,8,9,3,1,10,12])
>>> s
{1, 2, 3, 5, 6, 8, 9, 10, 12}
>>> s.clear()
>>> s
set()
#del 删除整个集合
>>> s=set([1,5,6,3,2,8,9,3,1,10,12])
>>> s
{1, 2, 3, 5, 6, 8, 9, 10, 12}
>>> del s
>>> s
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 's' is not defined
3.访问集合中的元素
可以用for in语句输出集合中的元素
>>> s=set([1,5,6,3,2,8,9,3,1,10,12])
>>> for i in s:
... print(i,end=',')
...
1,2,3,5,6,8,9,10,12,
4.集合间的运算
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a
{'r', 'c', 'd', 'b', 'a'}
>>> b
{'m', 'c', 'z', 'l', 'a'} # 集合b是不是集合a的子集
>>> a.issuperset(b)
False
>>> a - b # 集合a中包含而集合b中不包含的元素
{'r', 'd', 'b'}
>>> a | b # 集合a或b中包含的所有元素
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b # 集合a和b中都包含了的元素
{'a', 'c'}
>>> a ^ b # 不同时包含于a和b的元素
{'r', 'd', 'b', 'm', 'z', 'l'}
>>> 1 in a # 判断元素是否在集合中存在
False
>>> 'a' in a # 判断元素是否在集合中存在
True
>>> 'b' not in a # 判断元素是否在集合中存在
False