0

假设在 Python 中我有一个如下列表:
a = ['spam', 'eggs', 100, 1234]

现在我有了这个值devon,我想将它添加到“垃圾邮件”中以使其本身成为一个列表,结果如下所示: a = [['spam', 'devon'], 'eggs', 100, 1234]

编辑Drew 提出了一个很好的问题,所以我将扩展它:

之后devon,我们也被发送baloney并希望结果是 a = [['spam', 'devon', 'baloney'], 'eggs', 100, 1234]

最简单的方法是什么?如果元素事先是字符串或列表,是否有一种通用的方法来附加项目?

4

2 回答 2

9

修改a[0]

>>> a = ['spam', 'eggs', 100, 1234]
>>> a[0] = [a[0], 'Devon']
>>> a
[['spam', 'Devon'], 'eggs', 100, 1234]

对于您更新的问题:

>>> items = ['devon', 'baloney']
>>> a = ['spam', 'eggs', 100, 1234]
>>> a[0] = [a[0]] + items
>>> a
[['spam', 'devon', 'baloney'], 'eggs', 100, 1234]

如果您不确定“垃圾邮件”的位置,请使用列表理解:

>>> a = ['spam', 'eggs', 100, 1234]
>>> [item if item != 'spam' else [item, 'devon'] for item in a]
[['spam', 'devon'], 'eggs', 100, 1234]
于 2013-08-13T19:45:57.663 回答
2

尝试这个:

def add_to_first(list, element):
    try:
        list[0].append(element)
    except AttributeError:  # Not a list
        list[0] = [list[0], element]


items_string = ['spam', 'eggs', 100, 1234]
items_list = [['spam'], 'eggs', 100, 1234]

add_to_first(items_string, 'devon')
add_to_first(items_list, 'devon')

print items_string
print items_list

我得到:

>> [['spam', 'devon'], 'eggs', 100, 1234]
>> [['spam', 'devon'], 'eggs', 100, 1234]
于 2013-08-13T20:41:13.530 回答