Pythonic方式来列出字符串列表

时间:2013-07-25 14:06:39

标签: python string list nested

我找到了一种方法来做我想做的事情,但是我想知道是否有办法让我把它变成一条线。

我有一个字符串列表列表,与一个数字列表相比(有一个答案:[列表总和;返回总和列表]

示例列表:

list = [['T=-40F A=0K', 'T=-15F A=0K', 'T=59F A=0K', 'T=98F A=0K', 'T=120F A=0K'],
 ['T=-40F A=10K','T=-15F A=10K','T=59F A=10K','T=98F A=10K','T=120F A=10K']]

示例输出:

['T=-40F A=0K', 'T=-15F A=0K', 'T=59F A=0K', 'T=98F A=0K', 'T=120F A=0K', 'T=-40F A=10K', 'T=-15F A=10K', 'T=59F A=10K', 'T=98F A=10K', 'T=120F A=10K']

我可以使用这种方法加入这些:

new = []
for i in [['T=%.0fF A=%.0fK'%(t,a)for t in TEMP] for a in ALT]:
    new = new + i

有人得到了什么吗?

至于我在matplotlib情节中添加图例的应用程序

这很简单,并且是sum(list)

的一个很棒的功能

4 个答案:

答案 0 :(得分:3)

使用列表理解

>>> my_list = [['T=-40F A=0K', 'T=-15F A=0K', 'T=59F A=0K', 'T=98F A=0K', 'T=120F A=0K'], ['T=-40F A=10K','T=-15F A=10K','T=59F A=10K','T=98F A=10K','T=120F A=10K']]
>>>
>>> [y for x in my_list for y in x]
['T=-40F A=0K', 'T=-15F A=0K', 'T=59F A=0K', 'T=98F A=0K', 'T=120F A=0K', 'T=-40F A=10K', 'T=-15F A=10K', 'T=59F A=10K', 'T=98F A=10K', 'T=120F A=10K']

并且您不应该使用list作为变量名。

答案 1 :(得分:3)

您希望展平可迭代 - itertools.chain.from_iterable()为此目的而存在:

>>> data = ...
>>> import itertools
>>> list(itertools.chain.from_iterable(data))
['T=-40F A=0K', 'T=-15F A=0K', 'T=59F A=0K', 'T=98F A=0K', 'T=120F A=0K', 'T=-40F A=10K', 'T=-15F A=10K', 'T=59F A=10K', 'T=98F A=10K', 'T=120F A=10K']

它返回一个迭代器,因此如果你需要一个列表,你可以使用list(),或者只使用迭代器。

答案 2 :(得分:2)

您可以使用itertools.chain()压缩列表。

>>> testList =[['T=-40F A=0K', 'T=-15F A=0K', 'T=59F A=0K', 'T=98F A=0K', 'T=120F A=0K'],
 ['T=-40F A=10K','T=-15F A=10K','T=59F A=10K','T=98F A=10K','T=120F A=10K']]
>>> 
>>> from itertools import chain
>>> chain(*testList)
<itertools.chain object at 0x02B1E910>
>>> list(chain(*testList))
['T=-40F A=0K', 'T=-15F A=0K', 'T=59F A=0K', 'T=98F A=0K', 'T=120F A=0K', 'T=-40F A=10K', 'T=-15F A=10K', 'T=59F A=10K', 'T=98F A=10K', 'T=120F A=10K']

使用itertools.chain.from_iterable()

>>> list(chain.from_iterable(testList))
['T=-40F A=0K', 'T=-15F A=0K', 'T=59F A=0K', 'T=98F A=0K', 'T=120F A=0K', 'T=-40F A=10K', 'T=-15F A=10K', 'T=59F A=10K', 'T=98F A=10K', 'T=120F A=10K']

P.S - 请不要将list用作变量名称,它会遮挡内置颜色。

答案 3 :(得分:2)

尝试itertools.chain.fromiterable() -

from itertools import chain
result = list(chain.from_iterable(your_list))
相关问题