一 列表:
创建列表:
列表变量名 =[元素1,元素2,元素3,…];
列表元素的访问:
使用索引访问例如:
>>> money=[10,11,12,20]
>>> money[1]
11
>>> money[0]
10
>>>
当然索引也可以是负数,表示的是倒数第几个,例如:
>>> money[-1]
20
>>> money[-3]
11
>>>
切片:
list[x,y] 表示从索引为x的元素到索引为y-1的元素,x,y的取值可以是正数,也可以是负数。
下面是一些运行的实列:
>>> list=[1,2,3,4,5,6,7,8,9]
>>> list[1:3]
[2, 3]
>>>
切片list[x,y] 其中x的位置不给予值则是从列表开头到y-1,例如:
>>> list=[1,2,3,4,5,6,7,8,9]
>>> list[:3]
[1, 2, 3]
>>>
切片list[x,y]其中y的位置不给予值则是从列表的x位置到列表最后的位置,例如:
>>> list=[1,2,3,4,5,6,7,8,9]
>>> list[0:]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>
当然索引x,y也可以为负数,例如:
>>> list=[1,2,3,4,5,6,7,8,9]
>>> list[-4:-2]
[6, 7]
>>>
删除列表元素:
使用del删除列表的某一元素:
>>> list=[1,2,3,4,5,6,7,8,9]
>>> del list[1]
>>> list
[1, 3, 4, 5, 6, 7, 8, 9]
>>> del list[-1]
>>> list
[1, 3, 4, 5, 6, 7, 8]
>>>
利用切片,删除一段:
>>> list=[1,2,3,4,5,6,7,8,9]
>>> del list[1:3]
>>> list
[1, 4, 5, 6, 7, 8, 9]
>>> list=[1,2,3,4,5,6,7,8,9]
>>> del list[-3:-1]
>>> list
[1, 2, 3, 4, 5, 6, 9]
>>>
删除整个列表:
>>> list=[1,2,3,4,5,6,7,8,9]
>>> del list
>>> list
<class 'list'>
>>>
列表复制:
先举一个例子,程序如下:
>>> list=[1,2,3,4,5,6,7,8,9]
>>> t_list=list
>>> t_list
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list[0]=100
>>> list
[100, 2, 3, 4, 5, 6, 7, 8, 9]
>>> t_list
[100, 2, 3, 4, 5, 6, 7, 8, 9]
>>>
可以看到我们改变list[0]的值,相应的t_list的值也跟着变了,并没有达到我们要求的复制的功能。
第一种方法,使用切片进行复制:
>>> list=[1,2,3,4,5,6,7,8,9]
>>> t_list=list[:]
>>> list[0]=100
>>> list
[100, 2, 3, 4, 5, 6, 7, 8, 9]
>>> t_list
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>
可以看到这里t_list没有改变。
第二种方法,使用list.copy()方法
>>> list=[1,2,3,4,5,6,7,8,9]
>>> t_list=list.copy()
>>> list[0]=100
>>> list
[100, 2, 3, 4, 5, 6, 7, 8, 9]
>>> t_list
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>
列表可能用到的一些函数:
list(seq) 将一个序列转换为列表类型如:
>>> s="python"
>>> list(s)
['p', 'y', 't', 'h', 'o', 'n']
>>>
len(list) 返回列表的长度
>>> s=[1,2,3,4,5,6,7,8,9]
>>> len(s)
9
>>>
max(list) 返回列表中最大的元素,元素必须是同类型的数据,都是数字,或者字符串等等
>>> s=[1,2,3,4,5,6,7,8,9]
>>> max(s)
9
>>>
min(list)的用法和max(list)类似这里不做赘述。
sorted(list[,reverse=True/False]) []内的参数是可写可不写的,不是必须写的参数,不在[]内的是必须写的参数。改函数的作用是对列表元素按照ASCII码的顺序进行排序,并把排序后的列表作为返回值,并不修改原列表。其中reverse参数默认为False,表示升序排列,如果令reverse=True则降序排列,需要注意的是列表中的元素需要时同一类型的既都是数字或者都是字符等等
列表可能用到的一些方法:
list.sort([reverse=True/False]),这个方法会把修改后的顺序存储在原列表中,这里又sorted()函数不同,其他的一些注意事项与sorted()相同。
>>> list=[9,2,3,5,1]
>>> list.sort()
>>> list
[1, 2, 3, 5, 9]
>>>
list.reverse(),将列表反向排列,作用在原列表中。
>>> list=[9,2,3,5,1]
>>> list.reverse()
>>> list
[1, 5, 3, 2, 9]
>>>
list.append(n) 在列表末尾怎加一个元素n
>>> list=[1,2,3,4,5,6]
>>> list.append(7)
>>> list
[1, 2, 3, 4, 5, 6, 7]
>>>
list.pop(n) 删除并且返回列表中索引为n的元素,如果n不写则为最后一个元素。
>>> list=[1,2,3,4,5,6,7,8,9]
>>> list.pop(8)
9
>>> list
[1, 2, 3, 4, 5, 6, 7, 8]
>>> list.pop()
8
>>> list
[1, 2, 3, 4, 5, 6, 7]
>>>
list.count(n) 返回元素n在列表中出现的次数。
>>> list=[1,2,1,1,3,2]
>>> list.count(1)
3
>>>
list.index(n) 返回元素n在列表中第一次出现时的索引
>>> list=[1,2,3,1,2,3]
>>> list.index(1)
0
>>>
list.remove(n)这个方法会移除列表中第一次出现的元素n,后面还有不会移除
>>> list=[1,2,3,1,2,3]
>>> list.remove(2)
>>> list
[1, 3, 1, 2, 3]
>>>
list.insert(n,x)
在索引为n 的位置插入元素x
>>> list=[1,2,3,1,2,3]
>>> list.insert(1,0)
>>> list
[1, 0, 2, 3, 1, 2, 3]
>>>
list.clear()清空列表
>>> list=[1,2,3,1,2,3]
>>> list.clear()
>>> list
[]
>>>
list.copy() 复制一个列表
>>> list=[1,2,3,1,2,3]
>>> list1=list.copy()
>>> list1
[1, 2, 3, 1, 2, 3]
>>>
元组:
元组的元素不可以修改。
定义一个元组 :
元组名 = (元素1,元素2,元素3,…)
如果元组内有一个元素,那么这个元素后面的逗号(,)不能省略,例如:
>>> yz=(1)
>>> yz
1
>>> yz=1
>>> yz
1
>>>
可以看到这里yz=(1) 与yz=1 时等价的。
元组中只有一个元素的时候我们应该这样赋值,如下:
>>> yz=(1,)
>>> yz
(1,)
>>>
下面演示的是创建空的元组:
>>> yz=()
>>> yz
()
>>>
元组的切片和索引等等和列表类似这里不一一列举了。
下面说一下操作元素的有关函数。
tuple(seq) 这个函数可以使seq序列转换成元组 例如:
>>> list=[1,2,3,4,5,6,7,8]
>>> tuple(list)
(1, 2, 3, 4, 5, 6, 7, 8)
>>>
下面有很多函数的用法和列表中函数的用法相同
len(tuple) 返回元组的长度。
max(tuple) 返回元组中最大的元素(元组中的数据必须是同类型)
min(tuple) 返回元组中最小的元素
sorted(tuple[,reverse=True/False]) 改函数返回的为一个列表(并不是元组)元组里面的元素必须是同一类型。例如:
>>> tuple=(9,8,5,2,1,4)
>>> sorted(tuple)
[1, 2, 4, 5, 8, 9]
>>>
如果不是同一类型,就会出错:
>>> tuple=(9,8,5,2,1,4,'a','b')
>>> sort(tuple)
Traceback (most recent call last):File "<stdin>", line 1, in <module>
NameError: name 'sort' is not defined
>>>
sum(tuple) ,对元组里面的元素进行求和(元组里面必须都是数字)
>>> tuple=(1,2,3,4,5)
>>> sum(tuple)
15
>>> tuple=('a','b','c')
>>> sum(tuple)
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
>>>
元组的一些方法和列表类似,如下:
tuple.count(x) 返回元素x在元组中出现的次数
tuple.index(x) 返回元素x在元组中第一次出现时的索引。
**字典:**
建立字典的格式如下。
字典名 = {键1:值1,键2:值2,…}
访问字典的格式如下:
字典名[键]
注意:
1.字典中的键不能重复,如果重复,只有最后面的键会被记录。
>>> dict={"xu":1,"long":2,"xu":3}
>>> dict["xu"]
3
>>>
2.字典中的键必须是不可变的数据类型,比如数字,字符串,而不能用列表。
3.字典中的元素是无序的,所以不能通过索引来访问,也不能通过字典中不存在的键来访问
>>> dict={"xu":1,"long":2}
>>> dict["run"]
Traceback (most recent call last):File "<stdin>", line 1, in <module>
KeyError: 'run'
>>> diat[1]
Traceback (most recent call last):File "<stdin>", line 1, in <module>
NameError: name 'diat' is not defined
>>>
字典操作的有关函数:
len(dict),返回字典的长度
>>> dict={"xu":1,"long":2}
>>> len(dict)
2
>>>
dict(seq),将seq转换为字典(seq中的元素必须有映射关系)如下:
>>> zd=[("xu",1),("long",2)]
>>> t=dict(zd)
>>> t
{'xu': 1, 'long': 2}
>>>
字典的有关方法
dict1.update(dict2) 可以扩展一个字典。如下:
>>> dict1={"xu":1,"long":2}
>>> dict2={"run":3}
>>> dict1.update(dict2)
>>> dict1
{'xu': 1, 'long': 2, 'run': 3}
>>>
dict.clear() 清空一个字典
dict.fromkeys(seq[,value]) 这个方法可以创建一个字典,以序列seq为新字典的键,默认值为None,可选参数value可以所有的键赋一个相同的值,程序如下:
>>> list=["xu","long","run"]
>>> dict1=dict1.fromkeys(list)
>>> dict1
{'xu': None, 'long': None, 'run': None}
>>> dict1=dict1.fromkeys(list,1)
>>> dict1
{'xu': 1, 'long': 1, 'run': 1}
>>>
dict.pop(key) 这个方法可以删除字典中与键key所对应的键值对,并返回这个键的值。
>>> dict1={"xu":1,"long":2}
>>> dict1.pop("xu")
1
>>>
dict.popitem() 随机获取并删除字典中的一个键值对。
>>> dict1={"xu":1,"long":2,"run":3,"ai":4,"mou":5}
>>> dict1.popitem()
('mou', 5)
>>>
dict.get(key) 这个方法来访问一个不确定存不存在的键key的值,如果存在就返回他的值,不存在不会出现错误。例如:
>>> dict1={"xu":1,"long":2,"run":3,"ai":4,"mou":5}
>>> dict1.get("xu")
1
>>> dict1.get("liu")
>>>
dict.setdefault(key,value) 这个方法可以获取一个可能不存在的键值,当键存在时就返回他的值,当键不存在时,还可以添加这个键和在参数中设置的值并返回这个值。例如:
>>> dict1={"xu":1,"long":2,"run":3,"ai":4,"mou":5}
>>> dict1.setdefault("xu",1)
1
>>> dict1.setdefault("liu",1)
1
>>> dict1
{'xu': 1, 'long': 2, 'run': 3, 'ai': 4, 'mou': 5, 'liu': 1}
>>>