python重复_用Python创建重复n次的单项列表

用Python创建重复n次的单项列表

不变项目

对于不可变的项,如None、String、tuple或Frozenset,您可以这样做:[e] * 4

请注意,这最好仅用于列表中的不可变项(字符串、元组、冻结集),因为它们都指向内存中相同位置的相同项。当我必须构建一个包含所有字符串的模式的表时,我经常使用它,这样我就不必给出一个一对一的映射。schema = ['string'] * len(columns)

可变项目

我已经使用Python很长时间了,我从来没有见过用例可以用可变的实例来完成上面的操作。相反,要获得一个可变的空列表、SET或DICT,您应该这样做:list_of_lists = [[] for _ in columns]

下划线只是这个上下文中的一个抛出的变量名。

如果你只有这个号码,那就是:list_of_lists = [[] for _ in range(4)]

这个_并不是很特别,但是如果您不打算使用变量并使用任何其他名称,您的编码环境样式检查器可能会抱怨。

对可变项使用不可变方法的注意事项:

请注意使用可变对象进行此操作。,当你改变其中一个,它们都会改变,因为它们都是同目的:foo = [[]] *4foo[0].append('x')

foo现在返回:[['x'], ['x'], ['x'], ['x']]

但是,对于不可变的对象,您可以使其工作,因为您更改了引用,而不是对象:>>> l = [0] * 4>>> l[0] += 1>>> l[1, 0, 0, 0]>>> l = [frozenset()] * 4>>> l[0] |= set('abc')>>> l[frozenset(['a', 'c', 'b']),

frozenset([]), frozenset([]), frozenset([])]

但同样,可变对象对此没有好处,因为就地操作会更改对象,而不是引用:l = [set()] * 4>>> l[0] |= set('abc') >>> l[set(['a', 'c', 'b']), set(['a', 'c', 'b']), set(['a', 'c', 'b']), set(['a', 'c', 'b'])]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值