阅读 352

猪行天下之Python基础——3.2 列表 & 元组

内容简述:

  • 1、列表(List)
  • 2、元组(Tuple)

1、列表(List)

列表、元组和字符串因为成员有序,可以通过下标访问,又称为「序列」。列表有序内容长度可变,使用中括号[]表示元素间用逗号分隔,元素的数据类型可以不一样!列表的相关的操作有:「元素访问,切片,修改,追加,插入,删除,扩展,统计,排序,下标获取,拷贝


① 列表创建

直接把元素放在中括号[]中,用逗号进行分隔,比如:

data_list = [1,2,0,"a",True]
复制代码

② 访问列表元素

列表是有序的,可以通过「下标索引」来访问列表中的元素,可以从左开始索引,也可以从右开始索引。从左开始索引的下标范围:[0, 列表长度-1]从右开始索引的下标范围:[-1, 列表长度],如果索引下标不在范围里的话,会报数组越界错误!代码示例如下:

num_list = [1,2,3,4,5]
print(num_list[0])
print(num_list[-3])
print(num_list[5])
复制代码

运行结果如下

1
3
IndexError: list index out of range
复制代码

③ 列表切片

通过索引的方式只能获取一个元素,如果想获取多个元素呢?只能通过多个下标先获取多个元素
再另外拼接一个列表么?当然不用,Python为我们提供了强大的「切片操作」。通过「:(冒号)分割前后索引来实现,要注意索引的边界是顾头不顾尾,比如a[1:3],包含的是a[1],a[2],不包含a[3]!详细用法示例如下:

num_list = [0123456789]

# 截取[0,2)间的数据,输出结果:[0, 1]
print(num_list[0:2])

# 截取[1,9],输出结果:[1, 2, 3, 4, 5, 6, 7, 8, 9]
print(num_list[1:])

# 截取[0,7],输出结果:[0, 1, 2, 3, 4, 5, 6, 7]
print(num_list[:-2])

# 截取所有元素,输出结果:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(num_list[:])

# 截取[0,10)的元素,步长为2,输出结果:[0, 2, 4, 6, 8]
print(num_list[0:10:2])

# 截取[2,10)的元素,步长为3,输出结果:[2, 5, 8]
print(num_list[2::3])
复制代码

④ 更新、追加、插入列表元素

更新 列表元素 直接通过下标索引获得对应元素进行修改 即可,比如上面的num_list,修改第二个元素的值只需:num_list[1] = 'xxx',另外,如果你不知道修改的元素下标索引是哪一个,但是你知道元素的值,可以先通过 index("元素的值") 找到对应的下标索引值,再去修改元素的值。

追加列表元素可以通过 append函数 在列表的表位追加一个元素,比如num_list调用append(10)后,追加后列表里的元素就变成了 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10]。append函数只是在队尾插入一个元素,如果想插入到特定位置则需要使用insert函数 了。参数有两个,插入的下标位置(从0开始)插入元素值。比如num_list调用insert(3, 2.5)后的列表:[0, 1, 2, 2.5, 3, 4, 5, 6, 7, 8, 9, 10]


⑤ 删除列表元素

删除这里要分清楚是「想删除整个列表」还是「删除列表里某个元素」,代码示例如下:

num_list = [012345]

# remove()直接对列表中的元素进行检索删除,根据值不是下标,返回删除后的列表
num_list.remove(2)
print(num_list)

# del()根据下标进行检索删除,不返回删除值
del num_list[2]
print(num_list)

# pop()根据下标进行检索删除,不填下标默认删除最后一项,返回删除值
num_list.pop()
print(num_list)

# 删除列表引用
del num_list
print(num_list)
复制代码

运行结果如下

[0, 1, 3, 4, 5]
[0, 1, 4, 5]
[0, 1, 4]
NameError: name 'num_list' is not defined
复制代码

⑥ 列表遍历

可以通过循环对列表进行遍历,遍历的方式有多种,代码示例如下:

num_list = [0, 1, 2, 3, 4, 5]

for num in num_list:
    print(num, end='\t')

for index in range(0len(num_list)):
    print(num_list[index], end='\t')

for indexvalue in enumerate(num_list):
    print('index = %d values = %d' % (indexvalue))
复制代码

复制代码

运行结果如下

0    1    2    3    4    5    

0    1    2    3    4    5    

index = 0 values = 0
index = 1 values = 1
index = 2 values = 2
index = 3 values = 3
index = 4 values = 4
index = 5 values = 5
复制代码

⑦ 列表的其他操作

除了上面的这些常用操作外,还有一些其他的操作,使用代码示例如下:

a_list = [12.0'a'True]
b_list = [329411]

# 列表脚本操作符:可以使用+号组合列表,*号重复列表
print(a_list + a_list)
print(a_list * 2)

# 判断元素是否在列表中
print('a' in a_list)

# 获得列表长度
print('列表长度:%d' % len(a_list))

# 统计元素在列表中出现的次数,True的值也是1
print('列表中1出现的次数 %d' % a_list.count(1))

# 统计最大值,最小值,列表元素类型需要为数字
print('列表中的最大值 %d' % max(b_list))
print('列表中的最小值 %d' % min(b_list))

# 排序,本地排序(会修改值),返回None,只能比较数字!默认从小到大,
# 从大到小可以用可选参数,括号里加上key = lambda x:-1*x
b_list.sort()
print('升序排列:%s' % b_list)
b_list.sort(key=lambda x: -1 * x)
print('降序排列:%s' % b_list)

# 列表元素反转,会修改列表,返回None
a_list.reverse()
print('反转后的列表:%s' % a_list)

# extend()函数,在列表末尾一次性追加另一个列表中的多个值
a_list.extend(b_list)
print("追加后的列表:",a_list)
复制代码

运行结果如下

[12.0'a'True12.0'a'True]
[12.0'a'True12.0'a'True]
True
列表长度:4
列表中1出现的次数 2
列表中的最大值 11
列表中的最小值 2
升序排列:[234911]
降序排列:[119432]
反转后的列表:[True'a'2.01]
追加后的列表: [True'a'2.01119432]
复制代码

4、元组(Tuple)

元组,「受限的列表」,元组中的元素不能修改,使用()小括号 表示。如果元组中只有一个元素,需要在元素后添加逗号,比如(1,),否则会被当做括号运算符使用!!!比起列表,元组占用更少的内存,常会用作不能修改的参数传递给函数。除了没有修改元素的函数外,其他的函数和列表基本一致,还提供了一个tuple()函数用于:将字符串和列表转换为元组

另外还有一点要注意:

如果在新建变量的时候,没有小括号包裹,只用逗号分隔,Python也会把这个变量认做元组,比如:a = 1,2,3,4,如果此时调用print(type(a)),输出的结果会是:<class 'tuple'>


如果本文对你有所帮助,欢迎
留言,点赞,转发
素质三连,谢谢😘~