lis中每一项加倍

2024-06-25 23:43:09 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在不使用任何导入的情况下将列表中的每一项加倍?在

例如:

>>> multiply_items(['a', 'b'])
['a', 'a', 'b', b']
>>> multiply_items(['b', 'a'])
['b', 'b', 'a', a']
>>> multiply_items(['a', 'b', 'c'])
['a', 'a', 'b', b', 'c', c']
>>> multiply_items(['3', '4'])
['3', '3', '4', 4']
>>> multiply_items(['hi', 'bye'])
['hi', 'hi', 'bye', bye']

这是我想到的,但是它将元素组合在一起,而不是在单独的字符串中。在

^{pr2}$

我得到的输出:

>>> multiply_items(['3', '4'])
['33', '44']
>>> multiply_items(['hi', 'bye'])
['hihi', 'byebye']

感谢您的帮助:)


Tags: 字符串元素列表情况itemshimultiplybye
3条回答

如果您在展开一个列表时查看它,其中该列表的每个元素都是重复n次的元素,则可以将其编写为嵌套列表组件:

data = ['a', 'b']
doubled = [item for sub in data for item in [sub] * 2]

通常的警告适用于“相乘”项将同一对象。。。所以要小心包含可变对象的元素。在

我通常更喜欢列表理解:

def multiply_items(l):
    return [i for t in zip(l,l) for i in t]

如此接近。。。天真的方法:

for item in sample_list:
    for i in range(2):
        new_list.append(item)

您的问题是由于字符串也是列表,因此'a' * 2不是['a', 'a'],而是aa。现在,知道了这个问题,您仍然可以通过在单例列表中移动item在单个循环中解决它:更好的方法:

^{pr2}$

相关问题 更多 >