如何将for循环输出转换为列表?

Posted

技术标签:

【中文标题】如何将for循环输出转换为列表?【英文标题】:How to convert a for loop output to a list? 【发布时间】:2016-01-28 04:38:42 【问题描述】:

例如:

for y,x in zip(range(0,4,1),range(0,8,2)):  
    print(x+y)  

返回:

0  
3  
6  
9  

我想要的是:

['0', '3', '6', '9']

我怎样才能做到这一点?

【问题讨论】:

mylist = [(x+y) for x,y in zip(range(0,4,1),range(0,8,2))] 您是否特别希望将答案作为字符串?如果您想进行进一步的算术运算(包括排序),那么最好将它们保留为数字(它们也使用较少的数字形式的 RAM);您可以在输出时轻松将它们转换为字符串。 【参考方案1】:

不使用list comprehension,最简单的理解方式是:

mylist = []
for y,x in zip(range(0,4,1),range(0,8,2)):
    mylist.append(str(x+y))
print mylist

输出:

['0','3','6','9']

【讨论】:

不要使用类名list作为变量名。【参考方案2】:

使用list comprehension试试这个

>>>[x+y for y,x in zip(range(0,4,1),range(0,8,2))]
[0, 3, 6, 9]
>>>[str(x+y) for y,x in zip(range(0,4,1),range(0,8,2))]
['0', '3', '6', '9']

【讨论】:

【参考方案3】:

您可以动态生成列表:

print [str(x+y) for x, y in zip(range(0,4,1), range(0,8,2))]

['0','3','6','9']

这种技术称为list comprehensions。

【讨论】:

【参考方案4】:

您可以跳过 for 循环并使用 map() 并从 operator 导入 add

from operator import add
l = map(add,range(0,4,1),range(0,8,2))
print l

[0, 3, 6, 9]

如果你想要它作为字符串,你可以这样做

from operator import add
l = map(add,range(0,4,1),range(0,8,2))
print map(str, l)

['0','3', '6', '9'] 

【讨论】:

以上是关于如何将for循环输出转换为列表?的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 中将列表理解转换为 For 循环

如何将 for 循环转换为流

将 Xpath 转换为列表变量并使用 For 循环

操作列表

如何更改以列表形式输入 for 循环的变量

在 for 循环中将 Python Dask 系列转换为列表或 Dask DataFrame