Pythonic way to print list items
我想知道是否有比这更好的方法来打印python列表中的所有对象:
1 2 3 4 5 | myList = [Person("Foo"), Person("Bar")] print(" ".join(map(str, myList))) Foo Bar |
我这样读不太好:
1 2 3 | myList = [Person("Foo"), Person("Bar")] for p in myList: print(p) |
有没有类似的东西:
1 | print(p) for p in myList |
如果不是,我的问题是…为什么?如果我们能用全面的列表来做这类事情,为什么不作为列表之外的简单语句呢?
假设您使用的是python 3.x:
1 2 | print(*myList, sep=' ') |
您可以使用
有了python 2.x上的print语句,您将需要某种类型的迭代,关于您关于
1 | for p in myList: print p |
对于使用
'.join()
1 2 | print ' '.join(str(p) for p in myList) |
我一直在用这个:
1 2 3 4 | #!/usr/bin/python l = [1,2,3,7] print"".join([str(x) for x in l]) |
扩展@lucasg的答案(受其收到的评论启发):
要获得格式化的列表输出,可以沿着这些行执行一些操作:
1 2 3 4 | l = [1,2,5] print",".join('%02d'%x for x in l) 01, 02, 05 |
现在,
对于Python 2。*:
如果您为Person类重载了函数_uuStr_uu(),则可以省略带有map(str,…)的部分。另一种方法是创建一个函数,就像您写的那样:
1 2 3 4 5 6 7 | def write_list(lst): for item in lst: print str(item) ... write_list(MyList) |
python 3.*中有print()函数的参数sep。查看文档。
要显示每个内容,我使用:
1 2 3 4 5 | mylist = ['foo', 'bar'] indexval = 0 for i in range(len(mylist)): print(mylist[indexval]) indexval += 1 |
在函数中使用的示例:
1 2 3 4 5 6 7 8 | 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.') |
希望我能帮上忙。
我最近做了一个密码生成器,虽然我对python很陌生,但我把它作为一种在列表中显示所有项目的方式(通过小的编辑来满足您的需求…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | x = 0 up = 0 passwordText ="" password = [] userInput = int(input("Enter how many characters you want your password to be:")) print(" ") # 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) |
就像我说的,我对python很陌生,我相信这对于一个专家来说是笨拙的,但我只是举个例子。
OP的问题是:是否存在类似以下的东西,如果不存在,那么为什么
1 | print(p) for p in myList # doesn't work, OP's intuition |
答案是,它确实存在,即:
1 | [p for p in myList] #works perfectly |
基本上,使用
如果你只想看到列表中的内容,我认为这是最方便的:
1 2 | myList = ['foo', 'bar'] print('myList is %s' % str(myList)) |
简单易读,可与格式字符串一起使用。
假设您可以打印列表[1,2,3],那么python3的一个简单方法是:
1 2 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}") |
运行该命令将产生以下输出:
There are 8 items in this lorem list: [1, 2, 3, 'lorem', 'ipsum',
'dolor', 'sit', 'amet']