2013-03-28 138 views
1

真正简单的问题。我试图在Python中执行此操作:为x = str(y)范围(0,5)....在python中?

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

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

另外,我很好奇我到底在问什么。我确信在整个论坛中这已经被回答了数十亿次,但我不知道要找到什么。

+0

您是否希望能够在循环体中引用'x'和'y'? –

回答

4

您正在寻找:

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

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

+3

不,这不会在循环体中绑定'y'。 –

+0

尽管如此,如果你真的想避免生成列表,那么你应该使用'xrange'。 –

2

您可以使用列表理解为实现这一目标:

str_list = ['%s'%(x) for x in range(0, 5)] 
4

一个简单的方法是使用map()功能:

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

map()函数采用一个可迭代和穿过第一ARG这是一个可调用的每个ELEM。

+0

啊,我更喜欢这个! –

+1

但是这并不能让你访问'int'。 –

+0

没有意识到这是一个要求,但是你是对的它没有。 – FatalError

1

您想要搜索最有可能的List Comprehensions

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

这会给你一个字符串和整数的元组的列表,然后通过该列表像你迭代任何其他

0

你的问题还不清楚,因为它依赖于一个一段代码,没有按”实际上编译。

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

上述构建体将分别结合xystrint,对于每个循环迭代。输出是:

0 0 
1 1 
2 2 
3 3 
4 4 
+1

实际上,如果你直接读取那些不能编译的代码段,我用英文描述我试图用上述代码完成的事情。如果我的代码编译,我不会有问题。 另外,如果你没有提到我可以如何使它更清晰,这是无益的。我在我的帖子中特别说过,我不知道我在问什么:/ – user891876

相关问题