打印列表项的 Python 方法

我想知道是否有一种更好的方法来打印 Python 列表中的所有对象:

myList = [Person("Foo"), Person("Bar")]
print("\n".join(map(str, myList)))
Foo
Bar

我这样读不太好:

myList = [Person("Foo"), Person("Bar")]
for p in myList:
print(p)

有没有这样的东西:

print(p) for p in myList

如果不是,我的问题是... 为什么?如果我们可以用综合列表来做这类事情,为什么不把它作为列表之外的一个简单陈述呢?

608546 次浏览

假设您正在使用 Python3.x:

print(*myList, sep='\n')

正如 mgilson 在注释中指出的,可以使用 from __future__ import print_function在 Python 2.x 上获得相同的行为。

对于 Python 2.x 的 print 语句,你需要进行某种形式的迭代,关于你关于 print(p) for p in myList不能工作的问题,你可以使用下面的代码来做同样的事情,它仍然是一行:

for p in myList: print p

对于使用 '\n'.join()的解决方案,我更喜欢列表理解和生成器,而不是 map(),因此我可能会使用以下代码:

print '\n'.join(str(p) for p in myList)

我一直用这个:

#!/usr/bin/python


l = [1,2,3,7]
print "".join([str(x) for x in l])

对于 Python 2来说 * :

如果重载 Person 类的函数 _ _ str _ _ () ,可以省略 map (str,...)部分。另一种方法是创建一个函数,就像你写的那样:

def write_list(lst):
for item in lst:
print str(item)


...


write_list(MyList)

在 Python3.* 中有 print ()函数的参数 九月

尽管 [print(a) for a in list]打印出了所有的项目,但是它在最后会给出一系列的无类型

扩展@lucasg 的回答(受到评论的启发) :

要获得 < em > 格式化的 列表输出,可以执行以下操作:

l = [1,2,5]
print ", ".join('%02d'%x for x in l)


01, 02, 05

现在,", "提供了分隔符(只在项目之间,而不是在最后) ,格式化字符串 '02d'%x组合为每个项目 x提供了一个格式化字符串——在本例中,格式化为两位数字的整数,左边填充零。

为了显示每个内容,我使用:

mylist = ['foo', 'bar']
indexval = 0
for i in range(len(mylist)):
print(mylist[indexval])
indexval += 1

在函数中使用的示例:

def showAll(listname, startat):
indexval = startat
try:
for i in range(len(mylist)):
print(mylist[indexval])
indexval = indexval + 1
except IndexError:
print('That index value you gave is out of range.')

希望我帮上忙了。

我认为这是最方便的,如果你只是想看看列表中的内容:

myList = ['foo', 'bar']
print('myList is %s' % str(myList))

简单,易于阅读,可与格式字符串一起使用。

假设打印列表没有问题[1,2,3] ,那么 Python 3中的一个简单方法是:

mylist=[1,2,3,'lorem','ipsum','dolor','sit','amet']


print(f"There are {len(mylist):d} items in this lorem list: {str(mylist):s}")

运行此命令会产生以下输出:

这个 lorem 列表中有8个项目: [1,2,3,‘ lorem’,‘ ipsum’, ‘ dolor’,‘ sit’,‘ amet’]

观察员的问题是: 如果不存在,那么为什么存在

print(p) for p in myList # doesn't work, OP's intuition

答案是 确实存在也就是:

[p for p in myList] #works perfectly

基本上,使用 []列表内涵,去掉 print,避免打印 None。要了解为什么 print打印 None参见 这个

我最近做了一个密码生成器,虽然我是非常新的 Python,我匆忙这作为一种方式显示所有项目在一个列表(与小编辑,以满足您的需要..。

    x = 0
up = 0
passwordText = ""
password = []
userInput = int(input("Enter how many characters you want your password to be: "))
print("\n\n\n") # spacing


while x <= (userInput - 1): #loops as many times as the user inputs above
password.extend([choice(groups.characters)]) #adds random character from groups file that has all lower/uppercase letters and all numbers
x = x+1 #adds 1 to x w/o using x ++1 as I get many errors w/ that
passwordText = passwordText + password[up]
up = up+1 # same as x increase




print(passwordText)

就像我说的,IM 非常新的 Python,我肯定这是一个笨拙的方式为专家,但我只是在这里为另一个例子

使用单行代码打印给定列表的每个元素

 for i in result: print(i)

您还可以使用 len ()函数并标识列表的长度来打印元素,如下面的示例所示:

sample_list = ['Python', 'is', 'Easy']


for i in range(0, len(sample_list)):


print(sample_list[i])

参考资料: https://favtutor.com/blogs/print-list-python

您可以尝试这样做: 这也将打印它作为一个字符串

print(''.join([p for p in myList]))

或者,如果您想让它每次打印某些内容时都打印一个换行符

print(''.join([p+'\n' for p in myList]))