我想知道是否有更好的方法来打印比这一个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
如果不是这样,我的问题是,为什么? 如果我们能做到这种东西与全面列表,为什么不为列表之外的简单的语句?
Answer 1:
假设你正在使用Python 3.X:
print(*myList, sep='\n')
你可以使用Python的2.X相同的行为from __future__ import print_function
,由mgilson在评论中指出的。
随着关于Python 2.x的打印语句,你需要某种形式的重复,关于您的问题关于print(p) for p in myList
不工作,你可以用它做同样的事情,仍然是一个行:
for p in myList: print p
对于使用的解决方案'\n'.join()
我更喜欢列表理解和超过发电机map()
所以我可能会使用以下命令:
print '\n'.join(str(p) for p in myList)
Answer 2:
我经常用这个 :
#!/usr/bin/python
l = [1,2,3,7]
print "".join([str(x) for x in l])
Answer 3:
[print(a) for a in list]
将在年底给了一堆无类型的,虽然它打印出的所有项目
Answer 4:
对于Python 2。*:
如果重载函数__str __()为您的Person类,你可以用地图省略的部分(STR,...)。 这另一种方式是创建一个函数,就像你写的:
def write_list(lst):
for item in lst:
print str(item)
...
write_list(MyList)
在Python 3 *参数SEP的print()函数。 看看文档。
Answer 5:
扩大@ lucasg的答案(按收到的评论的启发):
为了得到一个格式化列表输出,你可以做这些方针的东西:
l = [1,2,5]
print ", ".join('%02d'%x for x in l)
01, 02, 05
现在", "
提供了分离器(只,而不是在最后项之间)和格式化字符串'02d'
结合%x
给出了每一个项目的格式化字符串x
-在这种情况下,格式化为一个整数用两位数字左用零填充。
Answer 6:
要显示每个内容,我使用:
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.')
希望我帮助。
Answer 7:
我觉得这是最方便的,如果你只是想看看在列表中的内容:
myList = ['foo', 'bar']
print('myList is %s' % str(myList))
操作简单,易于阅读,可以用格式字符串一起使用。
Answer 8:
OP的问题是:像下面存在,如果没有,那么为什么
print(p) for p in myList # doesn't work, OP's intuition
答案是,它确实存在这就是:
[p for p in myList] #works perfectly
基本上,使用[]
为列表理解和摆脱print
避免打印None
。 要知道为什么print
打印None
看到这
Answer 9:
我最近做了一个密码生成器,虽然我很新的蟒蛇,我掀起这件事,以此来显示列表中的所有项目(小编辑,以满足您的需求?
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和我敢肯定,这是方式笨重的专家,但我只是在这里的另一个例子
Answer 10:
假设你的罚款与您的清单被打印[1,2,3],然后在Python3一个简单的方法是:
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', '非常', '智能', 'A', '膜']
文章来源: Pythonic way to print list items