Python列表操作:将项添加到字符串元素以使其成为2项列表

时间:2013-08-13 19:44:31

标签: python python-3.x

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

现在我的值为devon,我想将其添加到'垃圾邮件'中,使其成为一个列表,结果如下: a = [['spam', 'devon'], 'eggs', 100, 1234]

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

devon之后,我们也会收到baloney并希望得到结果 a = [['spam', 'devon', 'baloney'], 'eggs', 100, 1234]

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

2 个答案:

答案 0 :(得分: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]

答案 1 :(得分: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]