我正在尝试使用sys.stdout.write()
打印不带换行符的列表值。它工作得很好,但唯一的问题是我想要将每个值与另一个值隔开。换句话说,我想要123
而不是1 2 3
。我在网站上查找了一个解决方案,但我还没有找到涉及列表的内容。
当我将" "
添加到sys.stdout.write(list[i])
时,如下所示:sys.stdout.write(list[i], " ")
,它根本不打印。任何建议如何解决?
这是我的代码:
import random
import sys
list = []
length = input("Please enter the number of elements to be sorted: ")
randomNums = input("Please enter the number of random integers to be created: ")
showList = raw_input("Would you like to see the unsorted and sorted list? y/n: ")
for i in range(length):
list.append(random.randint(1,randomNums))
if(showList == "y"):
for i in range(length):
sys.stdout.write(list[i], " ")
答案 0 :(得分:6)
尝试
sys.stdout.write(" ".join(list))
以上内容仅在list
包含字符串时有效。使其适用于任何列表:
sys.stdout.write(" ".join(str(x) for x in list))
在这里,我们使用generator expression将列表中的每个项目转换为字符串。
如果您的列表很大并且您想避免为其分配整个字符串,则以下方法也可以使用:
for item in list[:-1]:
sys.stdout.write(str(item))
sys.stdout.write(" ")
if len(list) > 0:
sys.stdout.write(list[-1])
正如其他答案所述,请勿调用变量list
。您实际上是在使用相同名称隐藏内置类型。
答案 1 :(得分:3)
你可以这样做:
sys.stdout.write(" ".join(my_list))
此外,最好不要为变量list
命名,因为Python已经有一个名为list
的内置类型。因此,这就是我将您的变量重命名为my_list
的原因。
答案 2 :(得分:0)
在Python3中,我尝试了上述解决方案,但是得到了一个奇怪的输出:
例如:
5
my_list = [1,2,3]
输出为:
sys.stdout.write(" ".join(str(x) for x in ss))
它将在末尾添加一个数字(5)。
在这种情况下,最好的解决方案是使用打印功能,如下所示:
1 2 35
输出:print(" ".join(str(x) for x in ss), file=sys.stdout)