合并列表的列表

发布于 2024-12-12 02:11:40 字数 510 浏览 0 评论 0原文

如何合并列表列表?

[['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']]

['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']

如果我可以在合并列表之前在每个项目的开头和结尾添加一个值(例如 html 标签),那就更好了

即,最终结果将是:

['<tr>A</tr>', '<tr>B</tr>', '<tr>C</tr>', '<tr>D</tr>', '<tr>E</tr>', '<tr>F</tr>', '<tr>G</tr>', '<tr>H</tr>', '<tr>I</tr>']

How do I merge a list of lists?

[['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']]

into

['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']

Even better if I can add a value on the beginning and end of each item before merging the lists, like html tags.

i.e., the end result would be:

['<tr>A</tr>', '<tr>B</tr>', '<tr>C</tr>', '<tr>D</tr>', '<tr>E</tr>', '<tr>F</tr>', '<tr>G</tr>', '<tr>H</tr>', '<tr>I</tr>']

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

萌能量女王 2024-12-19 02:11:40

不要使用 sum(),它连接列表的速度很慢。

相反,嵌套列表理解将起作用:

>>> x = [['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']]
>>> [elem for sublist in x for elem in sublist]
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']
>>> ['<tr>' + elem + '</tr>' for elem in _]

使用<的建议a href="http://docs.python.org/library/itertools.html#itertools.chain" rel="noreferrer">itertools.chain 也不错。

Don't use sum(), it is slow for joining lists.

Instead a nested list comprehension will work:

>>> x = [['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']]
>>> [elem for sublist in x for elem in sublist]
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']
>>> ['<tr>' + elem + '</tr>' for elem in _]

The advice to use itertools.chain was also good.

寂寞美少年 2024-12-19 02:11:40
import itertools

print [('<tr>%s</tr>' % x) for x in itertools.chain.from_iterable(l)]

您可以使用 sum,但我认为这有点难看,因为您必须传递 [] 参数。正如雷蒙德指出的那样,它也将很昂贵。所以不要使用总和。

import itertools

print [('<tr>%s</tr>' % x) for x in itertools.chain.from_iterable(l)]

You can use sum, but I think that is kinda ugly because you have to pass the [] parameter. As Raymond points out, it will also be expensive. So don't use sum.

风铃鹿 2024-12-19 02:11:40

要连接列表,您可以使用 sum

values = sum([['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']], [])

要添加 HTML 标记,您可以使用列表理解。

html_values = ['<tr>' + i + '</tr>' for i in values]

To concatenate the lists, you can use sum

values = sum([['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']], [])

To add the HTML tags, you can use a list comprehension.

html_values = ['<tr>' + i + '</tr>' for i in values]
怪我闹别瞎闹 2024-12-19 02:11:40

使用 itertools.chain

>>> import itertools
>>> list(itertools.chain(*mylist))
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']

包装HTML 中的元素可以在之后完成。

>>> ['<tr>' + x + '</tr>' for x in itertools.chain(*mylist)]
['<tr>A</tr>', '<tr>B</tr>', '<tr>C</tr>', '<tr>D</tr>', '<tr>E</tr>', '<tr>F</tr>',
'<tr>G</tr>', '<tr>H</tr>', '<tr>I</tr>']

请注意,如果您尝试生成有效的 HTML,您可能还需要 HTML 转义 字符串中的一些内容。

Use itertools.chain:

>>> import itertools
>>> list(itertools.chain(*mylist))
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']

Wrapping the elements in HTML can be done afterwards.

>>> ['<tr>' + x + '</tr>' for x in itertools.chain(*mylist)]
['<tr>A</tr>', '<tr>B</tr>', '<tr>C</tr>', '<tr>D</tr>', '<tr>E</tr>', '<tr>F</tr>',
'<tr>G</tr>', '<tr>H</tr>', '<tr>I</tr>']

Note that if you are trying to generate valid HTML you may also need to HTML escape some of the content in your strings.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文