我在python中遇到for循环和列表的语法问题。我正在尝试导出导出到空格分隔的文本文件的数字列表。
示例:文本文件中应包含的内容 0 5 10 15 20
我正在使用的代码如下,任何想法如何解决这个问题。
f = open("test.txt", "w")
mylist=[]
for i in range(0,20+1, 5):
mylist.append(i)
f.writelines(mylist)
f.close()
答案 0 :(得分:5)
如果您想使用range()
生成数字列表,那么您可以使用此代码:
mylist = map(str, range(0, 20 + 1, 5))
with open("test.txt", "w") as f:
f.writelines(' '.join(mylist))
map(str, iterable)
将对此可迭代对象中的所有元素应用str()
。
with
用于使用context manager定义的方法包装块的执行。这允许封装常见的try...except...finally
使用模式以便于重用。它在这种情况下的作用是总是关闭f
。最好使用它而不是手动调用f.close()
。
答案 1 :(得分:4)
试试这个:
mylist = range(0,20+1,5)
f = open("test.txt", "w")
f.writelines(' '.join(map(str, mylist)))
f.close()
答案 2 :(得分:1)
您必须将整数列表转换为字符串 map()上的列表,以使其可以连接。
mylist = range(0,20+1,5)
f = open("test.txt", "w")
f.writelines(' '.join(map(str, mylist)))
f.close()
答案 3 :(得分:0)
>>> with open('test.txt', 'w') as f:
... f.write(' '.join((str(n) for n in xrange(0, 21, 5))))