python 元组、列表问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 元组、列表问题相关的知识,希望对你有一定的参考价值。
a = (0, 0, 0, 0)
我要怎么写才能输出像下面的一系列列表?
(1, 0, 0, 0)
(2, 0, 0, 0)
(3, 0, 0, 0)
(0, 1, 0, 0)
(0, 2, 0, 0)
(0, 3, 0, 0)
(0, 0, 1, 0)
(0, 0, 2, 0)
(0, 0, 3, 0)
(0, 0, 0, 1)
(0, 0, 0, 2)
(0, 0, 0, 3)
求教各位大神
for i in range(4):
for j in range(1,4):
b = list(a)
b[i]=j
print(tuple(b))
元祖中的元素不可被修改,可以先将元祖转为list变更后再转回来
感谢,原来我错在将b=list(a) 放在了最上面,没放在loo里面!
参考技术A 元组是不可变类型,不能更新或者改变元组的元素。通过现有字符串的片段在构造一个新的字符串的方式来等同于更新元组操作。
如何将元组列表展平为pythonic列表[重复]
【中文标题】如何将元组列表展平为pythonic列表[重复]【英文标题】:How to flatten a list of tuples into a pythonic list [duplicate] 【发布时间】:2015-02-11 19:09:57 【问题描述】:给定以下元组列表:
INPUT = [(1,2),(1,),(1,2,3)]
如何将其展平为列表?
OUTPUT ==> [1,2,1,1,2,3]
上面有单行吗?
类似:Flatten list of Tuples in Python
【问题讨论】:
扁平化元组列表的方式与扁平化列表的方式完全相同。请参阅***.com/questions/406121/…、***.com/questions/952914/… 和许多其他答案。 这能回答你的问题吗? How to make a flat list out of a list of lists? 【参考方案1】:您可以使用sum
,如果它是一个列表列表(单嵌套),它会将所有元素相加。
sum([(1,2),(1,),(1,2,3)], ())
或转换为列表:
list(sum([(1,2),(1,),(1,2,3)], ()))
在 python 中添加列表。
注意:这非常效率低下,有些人说不可读。
【讨论】:
【参考方案2】:不是一行,而是两行:
>>> out = []
>>> map(out.extend, INPUT)
... [None, None, None]
>>> print out
... [1, 2, 1, 1, 2, 3]
声明一个列表对象并使用extend。
【讨论】:
【参考方案3】:>>> INPUT = [(1,2),(1,),(1,2,3)]
>>> import itertools
>>> list(itertools.chain.from_iterable(INPUT))
[1, 2, 1, 1, 2, 3]
【讨论】:
【参考方案4】:>>> INPUT = [(1,2),(1,),(1,2,3)]
>>> import operator as op
>>> reduce(op.add, map(list, INPUT))
[1, 2, 1, 1, 2, 3]
【讨论】:
这具有二次行为(如果您将列表延长十倍,它将慢一百倍),因此对于长列表来说不是一个好主意。 我同意,最好使用itertools.chain.from_iterable
【参考方案5】:
你可以使用list comprehension:
>>> INPUT = [(1,2),(1,),(1,2,3)]
>>> [y for x in INPUT for y in x]
[1, 2, 1, 1, 2, 3]
>>>
itertools.chain.from_iterable
在这种情况下也被大量使用:
>>> from itertools import chain
>>> INPUT = [(1,2),(1,),(1,2,3)]
>>> list(chain.from_iterable(INPUT))
[1, 2, 1, 1, 2, 3]
>>>
不过,这并不完全是一条线。
【讨论】:
以上是关于python 元组、列表问题的主要内容,如果未能解决你的问题,请参考以下文章