Files
2025PY/day21/02-切片的练习.py
2025-05-22 16:50:44 +08:00

83 lines
2.6 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 1、反转列表
# 编写代码将列表 [1, 2, 3, 4, 5] 反转。
lst = [1, 2, 3, 4, 5]
reversed_lst = lst[::-1]
print(reversed_lst) # 输出: [5, 4, 3, 2, 1]
# 2、获取子列表
# 从列表 [10, 20, 30, 40, 50, 60] 中获取索引 2 到 4包含 4的元素。
lst = [10, 20, 30, 40, 50, 60]
sub_lst = lst[2:5] # 注意:结束索引 5 对应的元素不包含在切片内
print(sub_lst) # 输出: [30, 40, 50, 60]
# 3、隔一个取一个
# 从字符串 "abcdefghij" 中每隔一个字符取一个,得到 "acegij"。
s = "abcdefghij"
result = s[::2]
print(result) # 输出: "acegik"
# 4、删除前三个元素
# 对列表 [1, 2, 3, 4, 5, 6, 7, 8, 9] 删除前三个元素。
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
lst = lst[3:] # 直接赋值新列表
print(lst) # 输出: [4, 5, 6, 7, 8, 9]
# 或者使用原地修改
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
lst[:3] = []
print(lst) # 输出: [4, 5, 6, 7, 8, 9]
# 5、替换中间元素
# 将列表 [1, 2, 3, 4, 5] 的中间元素(索引 2替换为 10。
lst = [1, 2, 3, 4, 5]
mid_idx = len(lst) // 2
lst[mid_idx:mid_idx+1] = [10] # 用 [10] 替换中间元素
print(lst) # 输出: [1, 2, 10, 4, 5]
# 6、检查回文
# 编写函数 is_palindrome(s),使用切片判断字符串是否为回文(如 "radar" 是回文)。
def is_palindrome(s):
return s == s[::-1]
print(is_palindrome("radar")) # 输出: True
print(is_palindrome("hello")) # 输出: False
# 7、合并切片
# 合并两个列表的切片:将列表 a = [1, 2, 3] 的前两个元素和列表 b = [4, 5, 6] 的后两个元素合并为 [1, 2, 5, 6]。
a = [1, 2, 3]
b = [4, 5, 6]
merged = a[:2] + b[-2:]
print(merged) # 输出: [1, 2, 5, 6]
# 8、矩阵转置
# 对二维列表 matrix = [[1, 2], [3, 4], [5, 6]] 使用切片转置为 [[1, 3, 5], [2, 4, 6]]。
matrix = [[1, 2], [3, 4], [5, 6]]
transposed = [list(row) for row in zip(*matrix)]
print(transposed) # 输出: [[1, 3, 5], [2, 4, 6]]
# 9、字符串重组
# 给定字符串 "HelloWorld",通过切片重组为 "WorldHello"。
s = "HelloWorld"
idx = s.index("World")
result = s[idx:] + s[:idx]
print(result) # 输出: "WorldHello"
# 10、列表复制
# 使用切片创建列表 original = [1, 2, [3, 4]] 的深拷贝(修改拷贝不影响原列表)。
import copy
original = [1, 2, [3, 4]]
shallow_copy = original[:] # 浅拷贝,嵌套列表仍共享引用
deep_copy = copy.deepcopy(original) # 深拷贝
# 修改浅拷贝的嵌套列表会影响原列表
shallow_copy[2][0] = 99
print(original) # 输出: [1, 2, [99, 4]]
# 修改深拷贝的嵌套列表不会影响原列表
deep_copy[2][0] = 100
print(original) # 输出: [1, 2, [99, 4]]