当前位置:  开发笔记 > 编程语言 > 正文

如何将Python中的2D数组合并为一个包含List Comprehension的字符串?

如何解决《如何将Python中的2D数组合并为一个包含ListComprehension的字符串?》经验,为你挑选了3个好方法。

列表对我的理解似乎就像正则表达式适合我的花岗岩的不透明块.我需要指针.

说,我有一个2D列表:

li = [[0,1,2],[3,4,5],[6,7,8]]

我想把它合并成一个长列表

li2 = [0,1,2,3,4,5,6,7,8]

或者带分隔符的字符串:

s = "0,1,2,3,4,5,6,7,8"

真的,我想知道如何做到这两点.



1> Thomas Woute..:

像这样:

[ item for innerlist in outerlist for item in innerlist ]

将其直接转换为带分隔符的字符串:

','.join(str(item) for innerlist in outerlist for item in innerlist)

是的,'对于外部列表中的内部列表'和'对于内部列表中的项目'的顺序是正确的.即使循环的"主体"位于listcomp的开头,嵌套循环(和'if'子句)的顺序仍然与编写循环时的顺序相同:

for innerlist in outerlist:
    for item in innerlist:
        ...


谢谢!在你用这种方式解释之前,这种顺序对我来说从来没有任何意义.

2> Allen..:

有几个选择.首先,您可以创建一个新列表并将每个列表的内容添加到其中:

li2 = []
for sublist in li:
    li2.extend(sublist)

或者,您可以使用itertools模块的chain函数,该函数生成包含多个迭代中的所有项的iterable:

import itertools
li2 = list(itertools.chain(*li))

如果采用此方法,则可以生成字符串而无需创建中间列表:

s = ",".join(itertools.chain(*li))



3> Martin Cote..:

试试看:

li=[[0,1,2],[3,4,5],[6,7,8]]
li2 = [ y for x in li for y in x]

你可以这样读:
给我每个y的列表.
ys来自xs.
xs来自li.

要在字符串中映射:

','.join(map(str,li2))

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有