1

真正简单的问题。我正在尝试在 python 中执行此操作:

for x = str(y) in range(0,5):

这样 y 将保存一个整数,而 x 将保存所述整数的字符串表示形式。我意识到我可以很容易地把它排成两行——只是想要一个捷径。

另外,我很好奇我到底在问什么。我确信这个问题已经在整个论坛中得到了无数次的回答,但我不知道要搜索什么才能找到它。

4

5 回答 5

4

您正在寻找:

for x in (str(y) for y in range(0, 5)):

这不会带来实例化str列表的开销(尽管有 5 个元素这几乎不是问题)。不过,每当我遇到这种情况时,我通常只str(y)在循环体内使用。

于 2013-03-28T18:19:26.277 回答
4

一个简单的方法是使用该map()函数:

for y in map(str, range(0, 5)):
    # ...

map()函数接受一个可迭代对象并将每个元素传递给第一个可调用参数。

于 2013-03-28T18:19:55.497 回答
2

您可以使用列表推导来实现此目的:

str_list = ['%s'%(x) for x in range(0, 5)]
于 2013-03-28T18:18:28.987 回答
1

您最有可能要搜索列表理解。

[(str(y),y) for y in range(0,5)]

这将为您提供字符串和整数的元组作为列表,然后像其他任何列表一样遍历该列表

于 2013-03-28T18:20:17.540 回答
0

您的问题不清楚,因为它依赖于一段实际上并未编译的代码。

for x,y in ((str(z), z) for z in range(0, 5)):
  print x, y

对于每个循环迭代,上述构造将分别绑定到 ax和a 。输出是:ystrint

0 0
1 1
2 2
3 3
4 4
于 2013-03-28T18:22:38.463 回答