如何将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循环输出转换为列表?的主要内容,如果未能解决你的问题,请参考以下文章