繁体   English   中英

展平元组列表中的列表

[英]Flatten a list inside list of tuples

我有以下元组列表。

lst = 
    [
        ('LexisNexis', ['IT Services and IT Consulting ', ' New York City, NY']),
        ('AbacusNext', ['IT Services and IT Consulting ', ' La Jolla, California']), 
        ('Aderant', ['Software Development ', ' Atlanta, GA']),
        ('Anaqua', ['Software Development ', ' Boston, MA']),
        ('Thomson Reuters Elite', ['Software Development ', ' Eagan, Minnesota']),
        ('Litify', ['Software Development ', ' Brooklyn, New York'])
    ]

我想将每个元组中的列表展平,使其成为lst元组的一部分。 我发现这个如何从列表列表中制作平面列表? 但不知道如何使它适合我的情况。

您可以使用解包

lst = [('LexisNexis', ['IT Services and IT Consulting ', ' New York City, NY']),
       ('AbacusNext', ['IT Services and IT Consulting ', ' La Jolla, California']), 
       ('Aderant', ['Software Development ', ' Atlanta, GA']),
       ('Anaqua', ['Software Development ', ' Boston, MA']),
       ('Thomson Reuters Elite', ['Software Development ', ' Eagan, Minnesota']),
       ('Litify', ['Software Development ', ' Brooklyn, New York'])]

output = [(x, *l) for (x, l) in lst]

print(output)
# [('LexisNexis', 'IT Services and IT Consulting ', ' New York City, NY'),
#  ('AbacusNext', 'IT Services and IT Consulting ', ' La Jolla, California'),
#  ('Aderant', 'Software Development ', ' Atlanta, GA'),
#  ('Anaqua', 'Software Development ', ' Boston, MA'),
#  ('Thomson Reuters Elite', 'Software Development ', ' Eagan, Minnesota'),
#  ('Litify', 'Software Development ', ' Brooklyn, New York')]

我使用collections中的abc找到了 Deacon 的答案 也值得一试。

from collections import abc

def flatten(obj):
    for o in obj:
        # Flatten any iterable class except for strings.
        if isinstance(o, abc.Iterable) and not isinstance(o, str):
            yield from flatten(o)
        else:
            yield o

[tuple(flatten(i)) for i in lst]
Out[47]: 
[('LexisNexis', 'IT Services and IT Consulting ', ' New York City, NY'),
 ('AbacusNext', 'IT Services and IT Consulting ', ' La Jolla, California'),
 ('Aderant', 'Software Development ', ' Atlanta, GA'),
 ('Anaqua', 'Software Development ', ' Boston, MA'),
 ('Thomson Reuters Elite', 'Software Development ', ' Eagan, Minnesota'),
 ('Litify', 'Software Development ', ' Brooklyn, New York')]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM