真正简单的问题。我正在尝试在 python 中执行此操作:
for x = str(y) in range(0,5):
这样 y 将保存一个整数,而 x 将保存所述整数的字符串表示形式。我意识到我可以很容易地把它排成两行——只是想要一个捷径。
另外,我很好奇我到底在问什么。我确信这个问题已经在整个论坛中得到了无数次的回答,但我不知道要搜索什么才能找到它。
真正简单的问题。我正在尝试在 python 中执行此操作:
for x = str(y) in range(0,5):
这样 y 将保存一个整数,而 x 将保存所述整数的字符串表示形式。我意识到我可以很容易地把它排成两行——只是想要一个捷径。
另外,我很好奇我到底在问什么。我确信这个问题已经在整个论坛中得到了无数次的回答,但我不知道要搜索什么才能找到它。
您正在寻找:
for x in (str(y) for y in range(0, 5)):
这不会带来实例化str
列表的开销(尽管有 5 个元素这几乎不是问题)。不过,每当我遇到这种情况时,我通常只str(y)
在循环体内使用。
一个简单的方法是使用该map()
函数:
for y in map(str, range(0, 5)):
# ...
该map()
函数接受一个可迭代对象并将每个元素传递给第一个可调用参数。
您可以使用列表推导来实现此目的:
str_list = ['%s'%(x) for x in range(0, 5)]
您的问题不清楚,因为它依赖于一段实际上并未编译的代码。
for x,y in ((str(z), z) for z in range(0, 5)):
print x, y
对于每个循环迭代,上述构造将分别绑定到 ax
和a 。输出是:y
str
int
0 0
1 1
2 2
3 3
4 4