首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将Python中的二维数组合并为一个具有列表理解功能的字符串?

如何将Python中的二维数组合并为一个具有列表理解功能的字符串?
EN

Stack Overflow用户
提问于 2008-09-19 17:21:54
回答 8查看 37.9K关注 0票数 20

列表理解对我来说就像是一块不透明的花岗岩,正则表达式就是我的。我需要指点。

比方说,我有一个2D列表:

代码语言:javascript
复制
li = [[0,1,2],[3,4,5],[6,7,8]]

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

代码语言:javascript
复制
li2 = [0,1,2,3,4,5,6,7,8]

或转换为带分隔符的字符串:

代码语言:javascript
复制
s = "0,1,2,3,4,5,6,7,8"

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

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2008-09-19 17:28:14

如下所示:

代码语言:javascript
复制
[ item for innerlist in outerlist for item in innerlist ]

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

代码语言:javascript
复制
','.join(str(item) for innerlist in outerlist for item in innerlist)

是的,'for innerlist in outerlist‘和'for item in innerlist’的顺序是正确的。即使循环的"body“位于listcomp的开头,嵌套循环(和'if‘子句)的顺序仍然与您将循环写出时相同:

代码语言:javascript
复制
for innerlist in outerlist:
    for item in innerlist:
        ...
票数 32
EN

Stack Overflow用户

发布于 2008-09-19 17:26:51

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

代码语言:javascript
复制
li2 = []
for sublist in li:
    li2.extend(sublist)

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

代码语言:javascript
复制
import itertools
li2 = list(itertools.chain(*li))

如果采用这种方法,则可以在不创建中间列表的情况下生成字符串:

代码语言:javascript
复制
s = ",".join(itertools.chain(*li))
票数 7
EN

Stack Overflow用户

发布于 2008-09-19 17:29:23

试一试:

代码语言:javascript
复制
li=[[0,1,2],[3,4,5],[6,7,8]]
li2 = [ y for x in li for y in x]

你可以这样读它:

给我每一笔钱的清单。

Y来自X。

X来自li。

要在字符串中映射它,请执行以下操作:

代码语言:javascript
复制
','.join(map(str,li2))
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/103844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档