Skip to main content
 首页 » 编程设计

python之我需要在 Python 中打印/返回元组中的多个元素

2025年05月04日13zhenyulu

我有一个字符串和元组列表。元组看起来像这样(数字,元素):

s = ["element1", (3, "element2"), (2, "element3")] 

我需要这样打印元组:

element1 
element2 
element2 
element2 
element3 
element3 

也就是说,我需要 number*element 打印。我想到的最好的是:

s = ["element1", (3, "element2"), (2, "element3")] 
 
def bb (x): 
    for n in x: 
        if isinstance (n, str): 
           print (n) 
        if isinstance (n, tuple): 
            print (n[1]) 

请您参考如下方法:

理想情况下,更改您的输入以获得 [(1, "element1,"), ...],但如果这不可能:

import types 
import itertools 
 
s = ["element1", (3, "element2"), (2, "element3")] 
 
print(list(itertools.chain.from_iterable((e, ) if isinstance(e, str) else itertools.repeat(e[1], e[0]) for e in s))) 

给我们:

['element1', 'element2', 'element2', 'element2', 'element3', 'element3'] 

我们在这里所做的是获取您的元素并将它们转换为元组 if 字符串(因此它们不会迭代为字符),并使用 itertools.repeat() 创建迭代器如果它们是元组,则重复给定的次数。然后我们使用 itertools.chain.from_iterable() 将这个集合的集合展平为一个迭代器,然后我们将其变成一个列表。

注意在 2.x 中,您需要 isinstance(e, basestring)。

编辑:或者:

args = ((e, 1) if isinstance(e, str) else (e[1], e[0]) for e in s) 
itertools.chain.from_iterable(itertools.starmap(itertools.repeat, args)) 

这是一回事,但在我看来可能更整洁一些。