2013-03-28 41 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

相關問題