07.python中列表练习题

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,然后打印 lastlst

参考代码:

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),分别打印 lnames,说明 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

按顺序完成以下操作,写出完整代码并写出每步后列表的内容:

  1. 创建列表 nums = [5, 2, 8, 2, 1]
  2. append 在末尾加一个 9
  3. insert 在索引 0 处插入 0
  4. remove 删掉第一个 2
  5. pop() 删掉最后一个元素,并把值赋给 last,打印 last
  6. sort() 升序排序
  7. reverse() 反转
  8. 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:按值删第一个匹配项,不需要拿到被删的值。

发表评论