我有一个关于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