当前位置: 首页 > 面试题库 >

在Python中创建列表,并在一行中包含给定对象的多个副本

齐涛
2023-03-14
问题内容

假设我有一个给定的对象(字符串“ a”,一个数字-假设为0或一个列表['x','y']

我想创建一个包含该对象许多副本的列表,但不使用for循环

L = ["a", "a", ... , "a", "a"]

要么

L = [0, 0, ... , 0, 0]

要么

L = [['x','y'],['x','y'], ... ,['x','y'],['x','y']]

我对第三种情况特别感兴趣。谢谢!


问题答案:

itertools.repeat() 是你的朋友。

L = list(itertools.repeat("a", 20)) # 20 copies of "a"

L = list(itertools.repeat(10, 20))  # 20 copies of 10

L = list(itertools.repeat(['x','y'], 20)) # 20 copies of ['x','y']

请注意,在第三种情况下,由于列表是通过引用引用的,因此更改列表中[‘x’,’y’]的一个实例将更改所有它们,因为它们均引用同一列表。

为了避免引用相同的项目,您可以改用理解来为每个列表元素创建新对象:

L = [['x','y'] for i in range(20)]

(对于Python 2.x,请使用xrange()代替以range()获得性能。)



 类似资料:
  • 问题内容: 在Python中创建新的空列表的最佳方法是什么? 要么 我之所以这样问是因为两个原因: 技术原因,关于哪个更快。(创建一个类会导致开销吗?) 代码可读性-这是标准约定。 问题答案: 您可以通过以下方法测试哪段代码更快: 但是,实际上,这种初始化很可能只是程序的一小部分,因此担心此初始化可能会出错。 可读性非常主观。我更喜欢,但是像AlexMartelli这样的一些非常博学的人更喜欢,因

  • 我想列个这样的单子。请帮帮我.谢了。

  • 我有一个包含以下[('列1',值),('列2',值),('列3',值),…,('列100',值)]的RDD。我想创建一个包含带有元组的单个列的数据框。 我得到的最接近的是: 然后 但这会产生一个包含列表列的数据帧,而不是元组。

  • 问题内容: 在Python中,如果将对象列表乘以整数,则会得到对该对象的引用列表,例如: 如果我想要的行为是创建原始对象的副本列表(例如,通过“ copy.copy()”方法或某种标准创建的副本),是否有一种 优雅的 方法可以 使用相同的乘法运算符 来做到这一点?我应该坚持列表理解之类的吗? 任何版本的Python都可以。 问题答案: 序列上的乘法运算符表示项目的重复-不会创建项目的副本(浅副本或

  • 问题内容: 我正在尝试打开文件并创建一个列表,其中每行都从文件中读取。 但是由于这样说,这个示例代码给了我一个错误。我这是什么问题 我如何编写代码以增加InFile中每个新行的列表数? 问题答案: 比这容易得多: 这将返回文件中每一行的列表。

  • 问题内容: 如何在不手动输入的情况下创建许多空列表 是否存在for循环,使我的空列表数量为n? 问题答案: 列表理解在这里最简单: 注意不要掉进陷阱: