python中列表的遍历

Python014

python中列表的遍历,第1张

没有优雅的方法解决,只有不要使用print语句,如楼上所说,或者使用python3.X中的print函数(通过

from __future__ import print_function使能print函数形式)

其实,在python2.X手册中对print语句描述说:(python2.7.2官方帮助文档)

一个空格会被自动打印在每个对象前,

除非:(1)还没有输出写到标准输出中

(2)当最后一个写到标准输出的是一个除了空格‘ ’的空白字符

(3)当最后写到标准输出的不是一个print语句。

所以在apple、banana等每个字符前都有一个空格。(apple的a前也有空格呢!)

一个好的解决办法是使用python3.X中的print函数。

通过在文件前面加上:

from __future__ import print_function

就可以使用print的函数形式了。

print函数的语法:

print([object, ...][, sep=' '][, end='\n'][, file=sys.stdout])

默认下,若没有指定sep,则使用空格。没指定end,则使用换行符。没指定输出文件则输出到标准输出。

例如:print('hello','world',sep='-',end='#')输出:

hello-world#

所以,你的程序可改为:

from __future__ import print_function

list = ["apple", "banana", "grape", "orange"]

for x in range(len(list)):

print('list[%d]:'%x,end='')

for y in range(len(list[x])):

print(list[x][y],sep='',end='')

print('')

至于: 'list[%d]:'%x 这里的百分号,是一个对字符串的操作符。百分号使得百分号前面的字符串中

的%d被百分号后的x的值替换掉。

列表的遍历方法一:通过for循环li = [i for i in range(10)]for i in li:print(i)方法二:通过while循环# 虽然for循环已经很好用了,但是在有些情况下,使用while循环可以更灵活# 只需要将判断条件设置为小于列表长度,即可完成列表通过while循环的遍历li = [i for i in range(10)]i = 0while i <len(li):print(li[i])i += 1方法三:配合enumerate使用,同时获取列表的索引li = [i + 1 for i in range(10)] # 此时,i为一个元组,元组的第一个元素为索引,第二个元素为原列表的元素# 因此,在遍历列表的同时,需要同时获取坐标的情况下,可以配合enumerate()一起使用for i in enumerate(li):print(i)字典的遍历字典的遍历和列表有一些不同,因为字典有键和值两个关键部分。默认的遍历情况,是遍历字典的键,当然,可以通过字典的键取得值,也可以直接遍历值,或者直接遍历键和值。方法一:直接使用for循环直接使用for循环对一个字典进行遍历,默认取得的是字典的键dt = {i: i + 1 for i in range(10)} for i in dt:print("字典的键:", i) # 字典的键print("字典的值:", dt[i]) # 字典的值方法二:遍历dict.keys()这种方法与方法一的效果其实是一样的,同样是获取字典的键dt = {i: i + 1 for i in range(10)} for i in dt.keys():print("字典的键:", i) # 字典的键print("字典的值:", dt[i]) # 字典的值方法三:遍历dict.values()这种方法与方法一和二很不相同,因为它只获取了字典的值dt = {i: i + 1 for i in range(10)} # 这是很特殊的方法,因为它没有获取字典的键for i in dt.values():print("字典的值:", i) # 此时i不再是字典的键,而是值方法四:遍历dict.items()这种方法一般来说要更好,因为它同时获取到了字典的键和值,而且性能上要高于先获取键,再通过键获取对应的值dt = {i: i + 1 for i in range(10)} for i in dt.items():print("字典的键值对:", i)print("字典的键:", i[0])print("字典的值:", i[1])总结1,列表的遍历比较简单,除了配合enumerate()使用,可以同步获取索引以外,并没有特别值得纠结的。2,字典的遍历方法比较多,其中第四种是能适用于一切情况的,前两种也可以适用于一切情况,但是如果你同时需要获取键和值,性能不如第四种要好。第三种比较特别,除非你真的只需要字典的值,否则它在多数情况下是不能够满足需求的。