Python:以指定格式打印列表列表
发布时间:2020-12-20 12:29:13 所属栏目:Python 来源:网络整理
导读:我有一个清单列表l = [[‘a’,’b’,’c’],’d’,’e’,[‘f’,’g’]].列表元素并不总是必须是字母表. 现在,我使用了以下代码: index =1 for i in l:... if isinstance(i,list):... for j in i :... print index,j... index = index + 1... else:... prin
我有一个清单列表l = [[‘a’,’b’,’c’],’d’,’e’,[‘f’,’g’]].列表元素并不总是必须是字母表.
现在,我使用了以下代码: >>> index =1 >>> for i in l: ... if isinstance(i,list): ... for j in i : ... print index,j ... index = index + 1 ... else: ... print index,i ... index = index + 1 ... 1 a 2 b 3 c 4 d 5 e 6 f 7 g 您可以看到我打印出结果的格式. 另一个例子: l = [['aaa','bbb','xxx'],'ddd'] Output = 1 aaa 2 bbb 3 xxx 4 ddd 我的问题是有更好的方法来做这个或python中的任何内置函数. PS:列表只有1级嵌套.因此,[[a,[b,c]],d,e]不是可能的. 解决方法
您可以使用
itertools.chain.from_iterable() 和
enumerate() 轻松完成此操作:
>>> import itertools >>> l = [['a','b','c'],'d','e',['f','g']] >>> for index,value in enumerate(itertools.chain.from_iterable(l),1): ... print(index,value) ... 1 a 2 b 3 c 4 d 5 e 6 f 7 g 编辑:正如mgilson所指出的,这对于多字符字符串作为顶层元素并不适用.我认为最好的解决方案就是在他的答案中使用生成器,但是,我认为字符串是特殊情况,而不是列表,所以我会颠倒逻辑: def flatten(seq): for item in seq: if not isinstance(item,str): #Use `basestring` in 2.x yield from item #For Python <3.3 #for subitem in item: # yield subitem else: yield item (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |