python中列表练习题
一、append() 与 insert()
练习 1.1
写出下面代码运行后 lst 的内容:
lst = [1, 2, 3]
lst.append(4)
lst.append(5)
# lst = ?
答案: [1, 2, 3, 4, 5]
练习 1.2
下面代码运行后 lst 是什么?为什么和“把 4、5 两个数加进去”不一样?
lst = [1, 2, 3]
lst.append([4, 5])
# lst = ?
答案: [1, 2, 3, [4, 5]]。append 只加一个元素,这里把整个列表 [4, 5] 当作一个元素加进去了。要加 4 和 5 两个数,应两次 lst.append(4)、lst.append(5) 或用 lst.extend([4, 5])。
练习 1.3
用 insert 在列表 ["B", "C", "D"] 的最前面插入 "A",写出完整一行代码,并写出操作后列表的内容。
参考代码:
lst = ["B", "C", "D"]
lst.insert(0, "A")
print(lst) # ['A', 'B', 'C', 'D']
练习 1.4
列表 nums = [10, 20, 30, 40],要求用 insert 在 20 和 30 之间插入 25(即插入后为 [10, 20, 25, 30, 40])。应使用 insert 的第几个索引?写出代码。
参考代码:
nums = [10, 20, 30, 40]
nums.insert(2, 25) # 索引 2 的位置(在 30 前面)
print(nums) # [10, 20, 25, 30, 40]
二、del、pop()、remove()
练习 2.1
列表 lst = ["A", "B", "C", "D"]。
用 del 删掉索引 2 的元素,写出代码,并写出删除后的 lst。
参考代码:
lst = ["A", "B", "C", "D"]
del lst[2]
print(lst) # ['A', 'B', 'D']
练习 2.2
列表 lst = [10, 20, 30, 40]。
用 pop() 删掉最后一个元素,并把被删的值赋给变量 last,然后打印 last 和 lst。
参考代码:
lst = [10, 20, 30, 40]
last = lst.pop()
print(last) # 40
print(lst) # [10, 20, 30]
练习 2.3
列表 lst = ["苹果", "香蕉", "橙子", "香蕉"]。
用 remove 删掉第一个 “香蕉”,写出代码,并写出删除后的 lst。若再执行一次 lst.remove("香蕉"),结果又是什么?
参考代码:
lst = ["苹果", "香蕉", "橙子", "香蕉"]
lst.remove("香蕉")
print(lst) # ['苹果', '橙子', '香蕉']
lst.remove("香蕉")
print(lst) # ['苹果', '橙子']
练习 2.4(选择:del 还是 pop?)
- 需求:删掉列表第 1 个元素,不需要用到被删的值。应选 del 还是 pop?写出一行代码。
- 需求:删掉列表最后一个元素,并且要把被删的值存到变量
x。应选 del 还是 pop?写出一行代码。
参考:
- 不需要值:
del lst[0] - 需要值:
x = lst.pop()或x = lst.pop(-1)
练习 2.5(pop 和 remove 的区别)
- 想按位置删(例如删第 2 个),并且要拿到被删的值,用 ____ 。
- 想按值删(例如删掉第一个等于 20 的元素),不关心位置,用 ____ 。
答案: pop(索引);remove(值)
三、sort() 与 sorted()
练习 3.1
列表 nums = [3, 1, 4, 1, 5]。
先调用 sort() 升序排序,打印 nums;再调用 sort(reverse=True),再打印 nums。写出完整代码。
参考代码:
nums = [3, 1, 4, 1, 5]
nums.sort()
print(nums) # [1, 1, 3, 4, 5]
nums.sort(reverse=True)
print(nums) # [5, 4, 3, 1, 1]
练习 3.2
列表 names = ["丁丁", "安安", "丙丙"]。
用 sorted() 得到一个新列表 l = sorted(names),分别打印 l 和 names,说明 names 有没有被修改。
参考代码:
names = ["丁丁", "安安", "丙丙"]
l = sorted(names)
print(l) # ['丙丙', '丁丁', '安安'](按字符排序)
print(names) # ['丁丁', '安安', '丙丙'](原列表不变)
练习 3.3(选择:sort 还是 sorted?)
- 想保留原列表不变,只想要一个“排序后的副本”,用 ____ 。
- 想直接让原列表变成排序后的顺序,用 ____ 。
答案: sorted();sort()
四、reverse() 与 len()
练习 4.1
列表 lst = [1, 2, 3, 4]。用 reverse() 反转,写出代码并写出反转后的 lst。
参考代码:
lst = [1, 2, 3, 4]
lst.reverse()
print(lst) # [4, 3, 2, 1]
练习 4.2
reverse() 和 sort(reverse=True) 有什么不同?各写一句话说明。
(提示:一个只“倒过来”,一个按“大小”排序。)
答案:
- reverse():只把元素顺序从头到尾反转,不比较大小。
- sort(reverse=True):按数值/字符从大到小排序,会改变元素先后顺序(按大小)。
练习 4.3
用 len() 写一行代码:若列表 lst 的长度大于 0,则打印“最后一个元素是:”加上最后一个元素的值(用索引或 -1 均可)。
参考代码:
lst = [10, 20, 30]
if len(lst) > 0:
print("最后一个元素是:", lst[-1]) # 或 lst[len(lst)-1]
五、综合练习
练习 5.1
按顺序完成以下操作,写出完整代码并写出每步后列表的内容:
- 创建列表
nums = [5, 2, 8, 2, 1] - 用 append 在末尾加一个 9
- 用 insert 在索引 0 处插入 0
- 用 remove 删掉第一个 2
- 用 pop() 删掉最后一个元素,并把值赋给
last,打印last - 用 sort() 升序排序
- 用 reverse() 反转
- 用 len() 打印列表长度
参考代码:
nums = [5, 2, 8, 2, 1]
nums.append(9) # [5, 2, 8, 2, 1, 9]
nums.insert(0, 0) # [0, 5, 2, 8, 2, 1, 9]
nums.remove(2) # [0, 5, 8, 2, 1, 9]
last = nums.pop() # last=9, nums=[0, 5, 8, 2, 1]
print(last)
nums.sort() # [0, 1, 2, 5, 8]
nums.reverse() # [8, 5, 2, 1, 0]
print(len(nums)) # 5
print(nums) # [8, 5, 2, 1, 0]
练习 5.2
列表 a = [3, 1, 2]。
要求:不修改 a,得到一个新列表,内容是 a 的升序排序结果。写出代码并打印 a 和得到的新列表,确认 a 没变。
参考代码:
a = [3, 1, 2]
b = sorted(a)
print(a) # [3, 1, 2]
print(b) # [1, 2, 3]
练习 5.3
用一句话说明:什么时候用 del,什么时候用 pop,什么时候用 remove?
参考答案:
- del:按索引删,且不需要被删的值。
- pop:按索引删(或删最后一个),且需要拿到被删的值。
- remove:按值删第一个匹配项,不需要拿到被删的值。