Python-100例(7-8) 复制列表 & 打印乘法口诀

Python-100例(7-8) 复制列表 & 打印乘法口诀
最新回答
微凉°

2026-05-07 18:05:22

Python-100例(7-8)解析:复制列表与打印乘法口诀Example-7:复制列表

核心思路:通过切片操作实现列表的浅拷贝。关键点:

  • 切片 [:] 会创建原列表的浅拷贝,新列表与原列表内容相同但内存地址不同。
  • 若列表包含嵌套结构(如子列表),子列表的引用会被复制而非深拷贝(修改嵌套对象会影响两列表)。

代码实现:

input_list = [3, 2, '1', [1, 2]]print('original list: {}'.format(input_list))copyed_list = input_list[:] # 切片浅拷贝print('copyed_list: {}'.format(copyed_list))

输出结果:

original list: [3, 2, '1', [1, 2]]copyed_list: [3, 2, '1', [1, 2]]

替代方法:若需深拷贝(完全独立),可使用 copy.deepcopy():

import copydeep_copied_list = copy.deepcopy(input_list)Example-8:打印乘法口诀

核心思路:通过双重循环控制行列,格式化输出对齐。关键点:

  • 外层循环控制行数(1-9),内层循环控制每行的列数(1到当前行数)。
  • 格式化字符串 %-2d 保证乘积占2位宽度,左对齐。

方法一:基础循环实现

def multiplication_table1(): for i in range(1, 10): for j in range(1, i + 1): print('%d*%d=%-2d ' % (j, i, i * j), end='') # 调整j和i顺序为常规口诀 print('')

方法二:一行代码实现(列表推导式)

def multiplication_table2(): print('n'.join([' '.join(['%s*%s=%-2s' % (y, x, x * y) for y in range(1, x + 1)]) for x in range(1, 10)]))

输出结果(以方法一为例):

1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 ...1*9=9 2*9=18 ... 9*9=81

注意事项:

  • 方法一中调整了 j 和 i 的顺序以输出常规口诀形式(如 1*2=2 而非 2*1=2)。
  • 一行代码版本利用嵌套列表推导式生成字符串,适合简洁场景但可读性较低。
小结
  1. 列表复制:切片 [:] 是简洁的浅拷贝方式,深拷贝需用 copy.deepcopy()。
  2. 乘法口诀:双重循环是直观解法,格式化字符串控制对齐;一行代码版本展示Python的简洁性,但需权衡可读性。

代码参考:完整示例见

GitHub仓库
。