如何用Python高效实现序列的快速复制?
- 内容介绍
- 文章标签
- 相关推荐
本文共计941个文字,预计阅读时间需要4分钟。
1. 基本用法:将一个序列中的每个元素乘以一个整数,会产生一个新的序列。这个新序列是原序列元素复制整数量后的结果,再拼接起来。
l=[1, 2, 3]l2=l * 3logging.info('l2 - %s', l2)
l3=5 * 'deniro'logging.info('l3 - %s', l3)
1 基本用法
把序列乘以一个整数,就会产生一个新序列。这个新序列是原始序列复制了整数份,然后再拼接起来的结果。
l=[1,2,3] l2=l * 3 logging.info('l2 -> %s',l2) l3=5 * 'deniro' logging.info('l3 -> %s',l3)
运行结果:
INFO - l2 -> [1, 2, 3, 1, 2, 3, 1, 2, 3]
INFO - l3 -> denirodenirodenirodenirodeniro
* 复制语法不会修改原有的操作对象,而是构建出一个全新的序列。
2 列表陷阱
a * n 语法中,a 为列表,n 为需要复制的列表数。如果 a 列表中的元素是基本类型的话,没什么问题。但如果 a 列表中的元素是对象的引用的话,那么这些复制出来的列表中的引用其实指向的是同一个引用。
Luciano Ramalho 举了一个井字棋示例。
井字棋,英文名叫Tic-Tac-Toe,是一种在3*3格子上进行的连珠游戏,和五子棋类似,由于棋盘一般不画边框,格线排成井字故得名。
本文共计941个文字,预计阅读时间需要4分钟。
1. 基本用法:将一个序列中的每个元素乘以一个整数,会产生一个新的序列。这个新序列是原序列元素复制整数量后的结果,再拼接起来。
l=[1, 2, 3]l2=l * 3logging.info('l2 - %s', l2)
l3=5 * 'deniro'logging.info('l3 - %s', l3)
1 基本用法
把序列乘以一个整数,就会产生一个新序列。这个新序列是原始序列复制了整数份,然后再拼接起来的结果。
l=[1,2,3] l2=l * 3 logging.info('l2 -> %s',l2) l3=5 * 'deniro' logging.info('l3 -> %s',l3)
运行结果:
INFO - l2 -> [1, 2, 3, 1, 2, 3, 1, 2, 3]
INFO - l3 -> denirodenirodenirodenirodeniro
* 复制语法不会修改原有的操作对象,而是构建出一个全新的序列。
2 列表陷阱
a * n 语法中,a 为列表,n 为需要复制的列表数。如果 a 列表中的元素是基本类型的话,没什么问题。但如果 a 列表中的元素是对象的引用的话,那么这些复制出来的列表中的引用其实指向的是同一个引用。
Luciano Ramalho 举了一个井字棋示例。
井字棋,英文名叫Tic-Tac-Toe,是一种在3*3格子上进行的连珠游戏,和五子棋类似,由于棋盘一般不画边框,格线排成井字故得名。

