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']

这是我想出来的,但它将元素组合在一起而不是单独的字符串.

def multiply_items(sample_list):
    '''(list) -> list

    Given a list, returns the a new list where each element in the list is
    doubled.

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

    '''
    new_list = []
    for item in sample_list:
        new_list.append(item * 2)
    return new_list

我得到的输出:

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

谢谢你的帮助:)

最佳答案 如此接近…天真的方法:

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

你的问题是由字符串也是列表这一事实引起的,因此’a’* 2不是[‘a’,’a’]而是aa.现在,知道问题,您仍然可以通过在单例列表中移动项目来在单个循环中解决它:更好的方法:

for item in sample_list:
    new_list.extend([item] * 2)
点赞