PYTHON如何打印列表中每个元素???

日月山人 发布于 2014/10/03 14:43
阅读 19K+
收藏 0
mob = ['魅族手机',['黑莓手机一代','黑莓手机二代'],'锤子手机']
for  x in mob:
    print(x)

   这个只会把列表打出来, 但是如何打印出每个元素??


加载中
0
DavidWTF
DavidWTF
这还要问吗?自己想想,遇到列表就遍历列表嘛。
0
樂天
樂天

递归。如果函数foo(li)用来打印列表li,foo()内部在遇到字符串时直接将其打印,遇到列表时,递归调用foo()处理这个列表。下面网页的例子应该能帮到你:
http://www.saltycrane.com/blog/2011/10/some-more-python-recursion-examples/

0
Feng_Yu
Feng_Yu
递归不就可以了?判断一下类型是list就继续循环打印list元素就行了
0
老汉-憨憨
老汉-憨憨
>>> for x in mob:
            if type(x).__name__ == 'list':
                for y in x:
                    print y
            else:
                    print x



魅族手机
黑莓手机一代
黑莓手机二代
锤子手机
knktc
knktc
其实这个答案考虑有不周全的地方,如果以后出现list in list in list的恶心情况,那么就会出点问题了……
0
knktc
knktc

其实这个问题也不简单,在stackoverflow上有很多讨论的说,因为涉及到列表不规整的问题(list in list in list...),而且大家都想写出高大上的代码来,这里贴出一个讨论帖的地址:http://stackoverflow.com/questions/2158395/flatten-an-irregular-list-of-lists-in-python

以下是一个炫酷但是不建议使用的方法,因为这个方法在python3中被移除了……

from compiler.ast import flatten
mob = ['a',['b','c'],'d'] 
for x in flatten(mob):
    print x




0
DavidWTF
DavidWTF
def printlist(a):
    for i in a:
        if type(i) is list:
            printlist(i)
        else:
            print (i)


t = ['1', ['2', '3'], ['4', ['5', '6']]]

printlist(t)



Lyle_W
Lyle_W
递归调用,不错
0
pythonstart
pythonstart

引用来自“DavidWTF”的评论

def printlist(a):
    for i in a:
        if type(i) is list:
            printlist(i)
        else:
            print (i)


t = ['1', ['2', '3'], ['4', ['5', '6']]]

printlist(t)



这个遍历比较给力
0
日月山人
日月山人

自己补充一下.   

def print_each_list(movies, level):
    for each_move in movies:
        if isinstance(each_move, list):
           print_each_list(each_move,level+1)

        else:
            for num in range(level):
                print('\t',end='')
            print(each_move)



返回顶部
顶部