我有一個關於Python中的循環結構的問題,形式如下:for x in y:
在我的情況下,y是從文件中讀取的一行,x是單獨的字符。我想在輸出中的每一對字符之後放置一個空格,如下所示:aa bb cc dd
等。所以,我想知道當前的迭代。是否有可能,還是我需要使用更傳統的C風格循環與索引?。我可以找出我目前正在進行的迭代嗎?
8
A
回答
21
for i,x in enumerate(y):
....
1
使用enumerate
:
for index,x in enumerate(y):
# do stuff, on iteration #index
或者,只創建一個變量,並增加它的循環體中。儘管如此,這並不完全是「pythonic」。
cur = 0
for x in y:
cur += 1
# do stuff, on iteration #cur
0
如果你正在做的是將每對字符後面輸入一個空格,你可能想要做的事情與列表內涵,如:
' '.join([''.join(characterPair) for characterPair in zip(*[iter(line + ' ')] * 2)])
不附加額外的空間,最後一個字符具有奇數字符的行將被刪除;在附加的空格中,具有奇數個字符的行將在末尾具有額外的空間。
(有可能是做的比我做了什麼更Python的方式。)
0
我真的不能做的情況下,這是比enumerate
方法好,但不太明顯某人從C的角度來,所以我想我會點出來的完整性:
from itertools import izip_longest
' '.join(j + k for j,k in izip_longest(fillvalue='', *([iter(line)]*2)))
在Python它通常首選(或至少鼓勵)做搭配發電機或類似這樣的列表內涵的東西,而不是依靠enumerate
。
這是從itertools module documentation的grouper
方法的變體。
相關問題
- 1. 我可以在後臺迭代嗎?
- 2. 我可以跳出當前正在執行的功能嗎?
- 3. svn update:我可以迭代結果嗎?
- 4. 我可以迭代數據源嗎?
- 5. 我可以迭代.NET4 MemoryCache嗎?
- 6. 我可以改進當前的Python代碼嗎?
- 7. 我可以在struts2.0的jsp上的迭代器中使用迭代器嗎?
- 8. 我可以使用GDB調試正在運行的進程嗎?
- 9. 我們可以在startActivity()暫停之前執行代碼嗎?
- 10. 我可以阻止Visual Studio在當前項目之外進行重構嗎?
- 11. 我可以在迭代中添加額外的步驟嗎?
- 12. 我可以在我的java代碼中讀取htop輸出嗎?
- 13. 我可以使用jQuery來顯示我的Ajax查詢正在進行嗎?
- 14. 我可以改進我的驗證嗎?
- 15. 我可以對WinRAR進行排隊嗎?
- 16. 我可以使用SignalR進行Monogame嗎?
- 17. 我可以在迭代器塊內創建下載進度條嗎?
- 18. 我可以在MPI並行代碼中拋出異常嗎?
- 19. 我可以在環中實現迭代器end()嗎?
- 20. 我可以在while循環中定義一個迭代器嗎?
- 21. 我可以找出我使用的方法的名稱嗎?
- 22. 我可以在awk中進行基於時間的進度嗎?
- 23. 我如何找到一個對象,我正在迭代通過
- 24. 我可以迭代和更新ngTable中的數據嗎?
- 25. 我可以使用掩碼來迭代Boost中目錄中的文件嗎?
- 26. 我可以在前端看看嗎?
- 27. 使用Windows命令行可以計算我正在運行的進程嗎?
- 28. 從哪裏獲得我目前正在進行的活動?
- 29. 我可以找出使用Eclipse運行哪個線程嗎?
- 30. 我可以在C++中「前進聲明」?
謝謝,這真是太棒了。 – foo 2010-05-24 01:48:44
順便說一句,在我和x之後的逗號之間加一個空格是不是很好的風格? – 2010-05-24 02:02:30
是的,這是一個很好的風格,但我和x之間的空間。 – 2010-05-24 02:09:54