Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
                        
                        4年前关闭。
                                                                                            
                
        
我目前有一个存储在变量中的列表,例如:


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的第一,第二和第三元素,等等。

09-26 14:36