6.数据类型-列表【Python】

本文介绍了Python中列表的创建、索引和切片操作,包括列表的动态大小和类型灵活性。此外,还详细讲解了如何添加、查找和删除元素,以及排序和生成列表的方法。同时提供了具体的代码示例和练习题,帮助读者深入理解列表的使用。
摘要由CSDN通过智能技术生成

列表

​ Python 的列表类似于 C/C++ 的数组,但是操作更加灵活。它们没有固定的大小,也没有固定的类型约束。与字符串不同,列表是可变的。

创建列表

​ 列表由方括号 [] 和分隔列表中的每个元素的逗号组成。列表可以嵌套。

lst = [1, 2, 3]
  • 列表元素可以是不同类型的。
lst = ["lst", 1, 2.3, 4 + 5j, ["lst", 1, 2.3, 4 + 5j]]
# 列表的嵌套可以用像矩阵一样的递进查询。
# lst[0][0] = 'l'
# lst[4][0] = "lst"
  • 和字符串一样 len(list) 可以获得列表中项的个数。
len(lst)

索引 & 切片

​ 列表中的索引与切片与字符串的操作一致。lst[a:b] 表示为将列表 lst 从 a 截取至 b-1(左闭右开)。切片操作允许索引越界。

lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 指定开始位置和结束位置
print(lst[2:6])
# 单指定开始位置
print(lst[4:])
# 单指定结束位置
print(lst[:-3])
# 越界操作
print(lst[1:100])

​ 输出样例:

[3, 4, 5, 6]
[5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6]
[2, 3, 4, 5, 6, 7, 8, 9]
  • [::] 的应用

​ 两个 : 操作符将括号内分为三段即:[1:2:3]。①表示开始索引、②表示结束索引、③表示间隔。要是开始索引也没有结束索引,等价于整个列表。

lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(lst[::2])

​ 输出样例:

[1, 3, 5, 7, 9]

基本方法

  • 添加元素

list.append(x):在列表末尾添加元素 x

list1 + list2:通过 + 拼接不同的列表。

list1.extend(list2):和 ② 相同,通过迭代的方式将 list2 的元素依次放入 list1 中。

list * a:将 list 列表重复 a 次。

insert(pos, x):在索引 pos 处添加元素 x

lst1 = [1, 3]
lst2 = [2, 4, 6]
lst1.append(5)
lst3 = lst1 + lst2
print(lst1 + lst2)
lst1.extend(lst2)
print(lst1)
lst3 = lst3 *2
print(lst3)
lst3.insert(3, "insert")
print(lst3)
[1, 3, 5, 2, 4, 6]
[1, 3, 5, 2, 4, 6]
[1, 3, 5, 2, 4, 6, 1, 3, 5, 2, 4, 6]
[1, 3, 5, 'insert', 2, 4, 6, 1, 3, 5, 2, 4, 6]
  • 查找元素

list.count(x):查找元素 x 在列表中出现的次数。

lst = [1, 2 ,3 ,4, 3, 2, 1, [2,3], "abc"]
print(lst.count(3))
print(lst.count([2,3]))
print(lst.count("abc"))
2
1
1

list.index(x):查找元素 x 在列表中最先出现的位置,要是不存在返回异常。

lst = [0,1,2,3,4,2,2,2]
print(lst.index(2))
#print(lst.index(5))
2
# ValueError: 5 is not in list
  • 删除元素

list.pop(pos):从列表中删除索引为 pos 的元素,当不设置 pos 的时候默认删除最后一个元素。

lst = [0,1,2,3,4,2,2,2]
lst.pop(2)
print(lst)
lst.pop()
print(lst)
[0, 1, 3, 4, 2, 2, 2]
[0, 1, 3, 4, 2, 2]

list.remove(x):从列表中删除最先出现的 x

lst = [0,1,2,3,4,2,2,2]
lst.remove(2)
print(lst)
[0, 1, 3, 4, 2, 2, 2]
  • 排序

list.sort(reverse = False):将列表 list 排序,当 reverse = False 为升序排列,当 reverse = True 为降序排列。

lst = [1, 3, 2, 4, 6, 5]
lst.sort()
print(lst)
lst.sort(reverse = False)
print(lst)
lst.sort(reverse = True)
print(lst)
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6]
[6, 5, 4, 3, 2, 1]

list.reverse():将列表翻转。

lst = [1, 3, 2, 4, 6, 5]
lst.reverse()
print(lst)
[5, 6, 4, 2, 3, 1]
  • 生成列表

list(range(a, b, c = 1)):生成从 a 到 b-1 范围且以 c 为间隔的列表。注意要是不写外层的转换为列表,就会返回一个 range 对象。

lst = range(1, 10)
print(type(lst))
print(list(lst))
print(list(range(1, 10, 2)))
<class 'range'>
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 3, 5, 7, 9]

[function for i in range(a, b, c)]:通过中括号里的 for 循环创建列表。

print([i*i for i in range(1, 10)])
[1, 4, 9, 16, 25, 36, 49, 64, 81]

[function for i in range(a, b) for j in range(c, d)]:②的变式,可通过二层循环生成组合。

print([i+j for i in "123" for j in "abc"])
['1a', '1b', '1c', '2a', '2b', '2c', '3a', '3b', '3c']
  • 遍历列表

for idx,x in enumerate(list):遍历列表每个元素并返回索引 idx 和元素 x

lst = ["a", "b", "c", "d", "e"]
for idx,x in enumerate(lst):
    print("索引:{0}; 元素:{1}".format(idx, x))
索引:0; 元素:a
索引:1; 元素:b
索引:2; 元素:c
索引:3; 元素:d
索引:4; 元素:e

练习

1.创建一个空列表colors, 将元素red, blue, green添加到列表。

2.找到元素blue的索引。

3.在colors列表中的元素blue前面插入元素yellow。

4.在元素green前面插入子列表[ ‘purple’, ‘pink’ ]。

5.创建一个1~7的整数字列表,并添加到colors列表末尾。

6.取出colors列表中索引4-7的元素。

7.取出colors列表中最后3个元素。

8.循环colors列表,打印每个元素的索引值和元素。

9.循环colors表,打印每个元素的索引值和元素,当索引值为偶数时,把对应的元素改成整数0。

参考答案,仅供参考

1.创建一个空列表colors, 将元素red, blue, green添加到列表。

colors = []
colors.append("red")
colors.extend(["blue", "green"])

2.找到元素blue的索引。

colors.index("blue")

3.在colors列表中的元素blue前面插入元素yellow。

colors.insert(colors.index("blue"), "yellow")

4.在元素green前面插入子列表[ ‘purple’, ‘pink’ ]。

colors.insert(colors.index("green"), ["purple", "pink"])

5.创建一个1~7的整数字列表,并添加到colors列表末尾。

colors.extend(list(range(1,8)))

6.取出colors列表中索引4-7的元素。

lst = colors[4:8]

7.取出colors列表中最后3个元素。

lst = colors[-3:]

8.循环colors列表,打印每个元素的索引值和元素。

for idx,x in enumerate(colors):
    print("索引:{0}; 元素:{1}".format(idx, x))

9.循环colors表,打印每个元素的索引值和元素,当索引值为偶数时,把对应的元素改成整数0。

for idx,x in enumerate(colors):
    if idx%2 == 0:
        x = 0
    print("索引:{0}; 元素:{1}".format(idx, x))
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值