Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中从列表列表打印到文件_Python_File_List_Iteration - Fatal编程技术网

在Python中从列表列表打印到文件

在Python中从列表列表打印到文件,python,file,list,iteration,Python,File,List,Iteration,我正在尝试打印到一个文件,该文件如下所示: 'A' '1' 'B' '2' 'C' '3' 但是,根据下面的代码,结果是: ['A'] ['B'] ['C'] 这可能是一个“垒球”问题,但我在这里做错了什么 l1 = ['1'] l2 = ['A'] l3 = ['2'] l4 = ['B'] l5 = ['3'] l6 = ['C'] listoflists = [l1,l2,l3,l4,l5,l6] itr = iter(listoflists) f = open ('order.

我正在尝试打印到一个文件,该文件如下所示:

'A'
'1'
'B'
'2'
'C'
'3' 
但是,根据下面的代码,结果是:

['A']
['B']
['C']
这可能是一个“垒球”问题,但我在这里做错了什么

l1 = ['1']
l2 = ['A']
l3 = ['2']
l4 = ['B']
l5 = ['3']
l6 = ['C']

listoflists = [l1,l2,l3,l4,l5,l6]
itr = iter(listoflists)

f = open ('order.txt','w')

while True: 
    try:
           itr.next()
           s = str(itr.next())
           f.write(str('\n'))
           f.write(s)

    except StopIteration:
        break
f.close()

您的代码可以简单得多:

for list in listoflists:
    f.write(str(list))
    f.write('\n')
但是,这将打印类似于['1']的内容。看起来你想要的东西更像:

for list in listoflists:
    f.write(str(list[0]))
    f.write('\n')

还有,为什么会有一堆单元素列表?您不能将所有元素放在一个列表中吗?

您的代码可以简单得多:

for list in listoflists:
    f.write(str(list))
    f.write('\n')
但是,这将打印类似于['1']的内容。看起来你想要的东西更像:

for list in listoflists:
    f.write(str(list[0]))
    f.write('\n')
还有,为什么会有一堆单元素列表?你不能把所有的元素放在一个列表中吗?

首先,不要使用iter,其次,这就是它的用途。其次,您实际上是在向文件中写入列表,而不是其内容。因此,您可以打印列表的第一个元素,即l1[0],也可以遍历所有内部列表元素

您的代码应该如下所示:

l1 = ['1']
l2 = ['A']
l3 = ['2']
l4 = ['B']
l5 = ['3']
l6 = ['C']

listoflists = [l1,l2,l3,l4,l5,l6]

f = open ('order.txt','w')

for inner_list in listoflists:
    for element in inner_list:
        f.write(element+'\n')

f.close()
首先,不要使用国际热核聚变实验堆,其次,这就是它的用途。其次,您实际上是在向文件中写入列表,而不是其内容。因此,您可以打印列表的第一个元素,即l1[0],也可以遍历所有内部列表元素

您的代码应该如下所示:

l1 = ['1']
l2 = ['A']
l3 = ['2']
l4 = ['B']
l5 = ['3']
l6 = ['C']

listoflists = [l1,l2,l3,l4,l5,l6]

f = open ('order.txt','w')

for inner_list in listoflists:
    for element in inner_list:
        f.write(element+'\n')

f.close()

我认为解决这个问题的最好方法就是使用一个基本的嵌套循环。试试这个:

l1 = ['1']
l2 = ['A']
l3 = ['2']
l4 = ['B']
l5 = ['3']
l6 = ['C']
listoflists = [l1,l2,l3,l4,l5,l6]

f = open("out.txt","w")

# for each list and
# for each item in the list;
# write the item to the file, separated by a comma
for list in listoflists: 
    for item in list: 
        f.write(item+",") 

f.close()
Out.txt现在适用于:

1,A,2,B,3,C,
1,A,2,B,3,C
哦,如果没有一行程序解决方案,Python问题是不完整的。这也会从我的初始响应中删除后面的逗号

open("out.txt","w").write(",".join(("".join(i) for i in listoflists)))
Out.txt现在适用于:

1,A,2,B,3,C,
1,A,2,B,3,C

我认为解决这个问题的最好方法就是使用一个基本的嵌套循环。试试这个:

l1 = ['1']
l2 = ['A']
l3 = ['2']
l4 = ['B']
l5 = ['3']
l6 = ['C']
listoflists = [l1,l2,l3,l4,l5,l6]

f = open("out.txt","w")

# for each list and
# for each item in the list;
# write the item to the file, separated by a comma
for list in listoflists: 
    for item in list: 
        f.write(item+",") 

f.close()
Out.txt现在适用于:

1,A,2,B,3,C,
1,A,2,B,3,C
哦,如果没有一行程序解决方案,Python问题是不完整的。这也会从我的初始响应中删除后面的逗号

open("out.txt","w").write(",".join(("".join(i) for i in listoflists)))
Out.txt现在适用于:

1,A,2,B,3,C,
1,A,2,B,3,C

在输出中包含引号有点奇怪,但如果您坚持:

for entry in listoflists:
  print >>f, repr(entry[0])

如果内部列表中不只有一个元素,您不会指定将发生什么,因此此处将忽略任何其他可能性。

在输出中包含引号有点奇怪,但如果您坚持:

for entry in listoflists:
  print >>f, repr(entry[0])

如果内部列表不只有一个元素,则不会指定将发生什么,因此此处将忽略任何其他可能性。

您只需使用itertools.chain遍历所有列表元素即可:


您可以使用itertools.chain简单地遍历所有列表元素:


获取错误文件内容的简单原因是调用iter两次。第15-16行是:

itr.next()
s = str(itr.next())

有关python打印语义的更多信息,请参见其他答案。获取错误文件内容的简单原因是调用了iter两次。第15-16行是:

itr.next()
s = str(itr.next())

有关Pythonic打印语义的更多信息,请参阅关于单元素列表的其他答案

,代码可能已简化以清晰明了。@danben Thank and@mizipzor you's right。。我有单元素列表,因为它代表了一个脚本的真正简化,该脚本从sqlite db中提取一些数据…一个列表有日期字段,另一个列表有另一个字段的内容。。。我可能也在以一种极为低效的方式做这件事……但它正在发挥作用——所以我没有搞乱它!关于单元素列表,为了清晰起见,代码可能已经简化了。@danben谢谢,@mizipzor你是对的。。我有单元素列表,因为它代表了一个脚本的真正简化,该脚本从sqlite db中提取一些数据…一个列表有日期字段,另一个列表有另一个字段的内容。。。我可能也在以一种极为低效的方式做这件事……但它正在发挥作用——所以我没有搞乱它!内部列表是否总是只包含一项?永远不会多,永远不会少?内部列表总是一个项目…哇。您完全绕过了拥有迭代器的整个目的。那简直是虐待狂。迭代器是专门设计用来处理for循环的。此外,列表已经是迭代器,因此不需要从ListofList创建新的迭代器。内部列表是否总是只包含一项?永远不会多,永远不会少?内部列表总是一个项目…哇。您完全绕过了拥有迭代器的整个目的。那简直是虐待狂。迭代器是专门设计用来处理for循环的。此外,列表已经是迭代器,因此无需从ListofList创建新的迭代器。您可以删除一行解决方案中的括号-通过使用生成器而不是创建列表对象来节省内存。已修复。虽然我更喜欢括号,因为我觉得它们更容易阅读,但那里已经有很多特殊字符了,把它们大多数放在括号里也没用。为了注意到内存的增加,你必须处理相当大的列表。顺便说一句,如果你有改进的余地,请随意编辑我的答案他不是要换支架
带括号的意思是去掉括号。在写入过程中只需要两层括号。您可以删除一行解决方案中的括号-使用生成器而不是创建列表对象来节省内存。已修复。虽然我更喜欢括号,因为我觉得它们更容易阅读,但那里已经有很多特殊字符了,把它们大多数放在括号里也没用。为了注意到内存的增加,你必须处理相当大的列表。顺便说一句,如果你有改进的余地,请随意编辑我的答案他不是要用括号替换括号,而是要去掉括号。在你的写作中只需要两层括号。谢谢,我喜欢这个解决方案。。下面也有一些不错的选择…但我喜欢这样冗长,因为随着时间的推移,我往往会忘记我是如何做事的…谢谢,我喜欢这个解决方案。。下面也有一些不错的选择..但我喜欢这样冗长,因为随着时间的推移,我往往会忘记我是如何做事情的。。。