让我们说在Python中我有一个列表如下:
a = ['spam', 'eggs', 100, 1234]
现在我的值为devon
,我想将其添加到'垃圾邮件'中,使其成为一个列表,结果如下:
a = [['spam', 'devon'], 'eggs', 100, 1234]
编辑 Drew提出了一个很好的问题,所以我会扩展它:
在devon
之后,我们也会收到baloney
并希望得到结果
a = [['spam', 'devon', 'baloney'], 'eggs', 100, 1234]
最简单的方法是什么? 是否有一种通用的方法来附加未知元素是否是事先的字符串或列表的项目?
答案 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]