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
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
