Python的方式来打印列表项Python的方式来打印列表项(Pythonic way to pri

2019-05-06 15:18发布

我想知道是否有更好的方法来打印比这一个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