列表和数组
区别:列表可变,而元组不可变。(包含的元素是否可更改)
创建:
# 定义列表
my_list = [’01’,’demo’,3]
# 定义元组
my_tuple = (’01’,’demo’,3)
通用用法:
只要不涉及改变元素的操作,列表和元素的用法是通用的。
(1) 通过索引使用元素
索引从 0 开始,也支持负数索引 (从 - 1 开始)
my_list = [’01’,’demo’,3]
print(my_list[0]) # 01
my_tuple = (’01’,’demo’,3)
print(my_tuple[-1]) # 3
(2) 序列切片
语法格式为:[start : end : step] 从 start 到 end 切片,但不包括 end; step 为步长,默认为 1,若为负数则无意义
my_list = [1,2,3,4,5,6,7,8]
print(my_list[2:5]) # [3,4,5]
my_tuple = (1,2,3,4,5,6,7,8)
print(my_tuple[3:9:3]) # (4,7)
(3) 加法
两个列表或元组所包含的元素的总和。列表和元组不能相加。
my_list1 = [1,2,3]
my_list2 = [4,5,6]
my_list3 = my_list1 + my_list2
print(my_list3) # [1, 2, 3, 4, 5, 6]
(4) 乘法
列表和元组包含的元素重复 N 次。
my_list = [1,2,’a’]
my_list2 = my_list * 3
print(my_list2) # [1, 2, ‘a’, 1, 2, ‘a’, 1, 2, ‘a’]
(5)in 运算符
判断列表或元组是否包含某元素。
my_tuple = (1,2,’3′,4,’5′)
print(2 in my_tuple) #True
(6) 长度、最大值和最小值
传给 max()、min() 函数的元组、列表的元素必须是相同类型且可以比较大小。
my_list = [1,2,3,4,5]
print(max(my_list)) # 5
my_tuple = (‘a’,’b’,’3′)
print(min(my_tuple)) # 3
print(len(my_tuple)) # 3
(7) 序列封包和序列解包
序列封包:程序把多个值赋给一个变量时,自动将多个值封装为元组。
序列解包:程序允许将序列直接赋给多个变量,各元素会被依次赋值给每个变量 (要求序列的元素个数和变量个数相等)
vals = 1,2,3,4,5
print(type(vals)) #
my_tuple = tuple(range(1,10,2))
print(my_tuple) # (1, 3, 5, 7, 9)
a,b,c,d,e = my_tuple
print(a,b,c,d,e) # 1 3 5 7 9
x,y,z = 1,2,3
print(x,y,z) # 1 2 3
xyz = 4,5,6
x,y,z = xyz
print(x,y,z) # 4 5 6
# 交换变量的值
x,y,z = y,z,x
print(x,y,z) # 5 6 4
first,second,*rest = range(10)
print(first) # 0
print(second) # 1
print(rest,type(rest)) # [2, 3, 4, 5, 6, 7, 8, 9],
使用列表
(1) 创建列表
my_tuple = (1,2,’3′,4,5)
my_list = list(my_tuple)
print(my_list,type(my_list)) # [1, 2, ‘3’, 4, 5]
my_range = range(1,5)
my_list2 = list(my_list2)
print(my_list2,type(my_list2)) # [1, 2, 3, 4]
(2) 增加列表元素
append() 会把传入的参数追加到列表最后面。可以接受单个值、列表、元组等,但只把元组、列表当成单个元素。
外汇出入金流程 http://www.fx61.com/support
my_list = [1,2,3,’4′,’5′]
my_list.append(6)
print(my_list) # [1, 2, 3, ‘4’, ‘5’, 6]
my_tuple = (‘a’,’b’,’c’)
my_list.append(my_tuple)
print(my_list) # [1, 2, 3, ‘4’, ‘5’, 6, (‘a’, ‘b’, ‘c’)]
如果不希望追加的列表被当成一个整体而是增加列表中的元素时,可使用 extend() 方法。
my_list = [1,2,3]
my_list2 = [‘a’,’b’,’c’]
my_list.extend(my_list2)
print(my_list) # [1, 2, 3, ‘a’, ‘b’, ‘c’]
my_list.extend(range(3,10))
print(my_list) # [1, 2, 3, ‘a’, ‘b’, ‘c’, 3, 4, 5, 6, 7, 8, 9]
insert() 可以在列表中增加元素,并制定插入的位置。
my_list = [1,2,3]
my_list.insert(2,’a’)
print(my_list) # [1, 2, ‘a’, 3]
my_tuple = (‘b’,’c’,’d’)
my_list.insert(3,my_tuple)
print(my_list) # [1, 2, ‘a’, (‘b’, ‘c’, ‘d’), 3]
(3) 删除列表元素
del 可用于删除列表中的元素,也可删除列表中的中间一段,也可用于删除变量。
my_list = [1,2,(3,4,5),’a’,’b’,’c’]
del my_list[2]
print(my_list) # [1, 2, ‘a’, ‘b’, ‘c’]
del my_list[3:5]
print(my_list) # [1, 2, ‘a’]
my_list2 = list(range(1,10))
del my_list2[2:-2:2]
print(my_list2) # [1, 2, 4, 6, 8, 9]
del 删除变量。
num = 10
del num
print(num) # NameError: name ‘num’ is not defined
remove() 删除匹配到的第一个列表元素。
my_list = [1,2,3,1,1,4,’5′]
my_list.remove(1)
print(my_list) # [2, 3, 1, 1, 4, ‘5’]
clear() 清空列表的所有元素。
my_list.clear()
print(my_list) # []
(4) 修改列表元素
通过索引修改列表元素 (正数索引、负数索引)
my_list = [1,2,’a’,’b’]
my_list[-2] = 3
print(my_list) # [1, 2, 3, ‘b’]
通过 slice() 对列表其中一部分赋值,不要求新赋值元素个数与原来元素个数相等,这样既可为列表增加元素,亦可为列表删除元素。
my_list = list(range(1,5))
my_list[1:3] = [‘a’,’b’]
print(my_list) # [1, ‘a’, ‘b’, 4]
插入元素。
my_list = list(range(1,5))
my_list[1:3] = [‘a’,’b’,’c’,’d’,’e’]
print(my_list) # [1, ‘a’, ‘b’, ‘c’, ‘d’, ‘e’, 4]
删除元素。
my_list = list(range(1,5))
my_list[1:3] = []
print(my_list) # [1, 4]
使用字符串赋值会自动把字符串当成序列处理,其中每个字符都是一个元素。
my_list = list(range(1,5))
my_list[1:3] = ‘fltenwall’
print(my_list) # [1, ‘f’, ‘l’, ‘t’, ‘e’, ‘n’, ‘w’, ‘a’, ‘l’, ‘l’, 4]
使用 slice 赋值时,也可指定 step 参数,要求所赋值的列表元素个数与所替换的列表元素个数相等。
my_list = list(range(1,10))
my_list[2:9:2] = [‘a’,’b’,’c’,’d’]
print(my_list) # [1, 2, ‘a’, 4, ‘b’, 6, ‘c’, 8, ‘d’]
(5) 列表其他常用方法
dir(list) 可看到列表包含的所有方法。
count 用于统计列表中某个元素出现的次数。
my_list = [1,2,3,2,1,’1′,’2′,3,2,1]
print(my_list.count(2)) # 3
index() 用于定位某个元素在列表中出现的位置,可传入 start、end 参数,用于在列表的指定范围内搜索元素。
print(my_list.index(3,1,8)) # 2
1
pop() 与 append()
stack = []
stack.append(‘a’)
stack.append(‘b’)
stack.append(‘c’)
print(stack) # [‘a’, ‘b’, ‘c’]
stack.pop() # ‘c’
print(stack) # [‘a’, ‘b’]
everse() 将列表中所有元素顺序反转。
my_list = list(range(1,10))
my_list.reverse()
print(my_list) # [9, 8, 7, 6, 5, 4, 3, 2, 1]
sort() 用于列表元素进行排序。
my_list = [1,7,3,5,6,2]
my_list.sort()
print(my_list) # [1, 2, 3, 5, 6, 7]
sort() 可传入 key 和 reverse 两个参数,这两个参数必须通过参数名指定。key 为每个元素都生成一个比较大小的“键”,reverse 用于执行是否需要反转排序,默认从小到大。
my_list = [‘python’,’go’,’java’,’ruby’,’lua’]
my_list.sort(key=len,reverse=True)
print(my_list) # [‘python’, ‘java’, ‘ruby’, ‘lua’, ‘go’]