我找到了一种方法来做我想做的事情,但是我想知道是否有办法让我把它变成一条线。
我有一个字符串列表列表,与一个数字列表相比(有一个答案:[列表总和;返回总和列表]
示例列表:
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)
的一个很棒的功能答案 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))