python - 使用列表理解在每次迭代中返回一个列表

标签 python list python-3.x list-comprehension

我有一个对象,其中包含一个值和一个列表。现在我有了这些对象的列表,并希望将所有值和列表连接到一个大列表中。

这是我目前的状态:

class Language:
    def __init__(self, name, code, *args):
        self.name = name
        self.code = code
        self.alt = args
language_list = [Language("Deutsch", "deu", "de", "ger"), 
                 Language("Español", "spa", "es"), 
                 Language("English", "eng", "en"), 
                 Language("Svenska", "swe", "sv"), 
                 Language("Dansk", "dan", "da"), 
                 Language("ﺎﻠﻠﻏﺓ ﺎﻠﻋﺮﺒﻳﺓ", "ara", "ar"), 
                 Language("Italiano", "ita", "it"), 
                 Language("Français", "fra", "fr")]

print([[ lang.code ] + list(lang.alt) for lang in languages_list])

这将返回一个二维数组:

[["deu", "de", "ger"], ["spa", "es"], ["eng", "en"]…

现在有没有一种方法,可以将其合并到一个大列表中,或者基本上执行 [].extend() 而不是 [].append() 每次迭代。

最佳答案

不,你要么必须像这样展平

print([item for lang in languages_list for item in [lang.code] + list(lang.alt)])

或者

from itertools import chain
print([item for lang in languages_list for item in chain([lang.code], lang.alt)])

我更喜欢 itertools.chain 方法,因为它不必创建一个长列表,以防您的 lang.alt 很长。

关于python - 使用列表理解在每次迭代中返回一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23323675/

相关文章:

Python - 如何加速具有函数和多个返回值的嵌套 for 循环

python - 如何使用正则表达式来帮助抓取网络数据?

python - 从双向链表中删除节点并保持位置不变

python - Django 迁移不调用重写的 save() 方法?

2个列表的Python组合

python - 测量图像中文本边框的直/平滑度

list - 在 clojure 中使用循环连接要列出的元素?

java - 如何用Java编写文件列表

java - 将值添加到 java 中的映射数组中的单个变量

python - __getattribute__ 什么时候不参与属性查找?