我当前有一个存储在变量中的列表,例如:
- 2015 年 1 月 1 日
- 13:22
- 牛排
- 2015年1月2日
- 13:23
- 薯条
- 2015年1月3日
- 13:23
- 沙拉
我有一个变量 z 保存此信息。
我想将每 3 行连接在一起,这样输出就是日期 + 时间 + 顺序在一行中。我尝试了下面的方法,但这会在每行上放置 3 个字母,而不是 3 行
threelines = range(0,len(z),3)
for num, line in enumerate(z):
if num in threelines:
print ' '.join(z[num:num+3])
如有任何帮助,我们将不胜感激!
最佳答案
您不需要使用索引,您可以编写非常明确的代码,例如:
lines_iter = iter(z.splitlines()) # If z is a file, lines_iter = z works
# itertools.izip() is usable, too, for a low memory footprint:
for date_time_order in zip(lines_iter, lines_iter, lines_iter):
print " ".join(date_time_order) # "<date> <time> <order>"
这样做的优点是可以为您提供非常清晰的变量名称,并且即使 z
是一个迭代器(如文件)也可以工作:无需提前知道行数,而且这种方法占用的内存很少。
它的工作方式来自于 zip()
工作方式的具体细节:it builds tuples of elements, by getting the next element of each of its arguments in turn 。因此,它首先返回lines_iter的第一个、第二个和第三个元素,等等。
关于python - 将每 3 行连接在一起 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29942485/