我只有这样的变量或字符串列表(但不仅仅是我的三个代码中的变量):
a = 'apples'
b = 'pears'
c = ['grapes', 'bananas', 'kiwis']
是否有一种简单的方法可以将它们组合成一个大列表['apples', 'pears', 'grapes', 'bananas', 'kiwis']
?我尝试了a + b + c
,但得到了TypeError: can only concatenate str (not "list") to str
。没有顺序显示字符串/列表。这肯定是一个非常简单和愚蠢的问题,但我找不到答案-如果重复...表示歉意...
编辑:
由于上面的例子被指出太简单了:我有一个很大的变量列表,其中一些只是字符串,而有些则是字符串列表。它们没有顺序,我想知道是否有一种简便的方法可以将它们组合在一起,而无需手动查看哪些是字符串,哪些是列表,并分别在我的代码中处理变量。如果不可能,那也是一个答案。
答案 0 :(得分:3)
是的,您可以创建一个新列表,在其中“解压缩”列表,并添加其他字符串元素,例如:
new_list = [a, b, *c]
如果要添加列表的元素,则需要在前面加上星号。
如果事先不知道列表是什么,我们可以检查一下,然后解压缩它们,例如:
from itertools import chain
new_list = list(chain.from_iterable(
x if isinstance(x, list) else (x,) for x in [a, b, c])
)
答案 1 :(得分:3)
您可以尝试这种方式
TabControl
答案 2 :(得分:1)
for x in [a,b]:
c.append(x)
答案 3 :(得分:0)
for obj in list_of_strings_and_lists
if isinstance(obj, basestring):
new_list.append(obj)
else: # it's a list
new_list += obj
我还没有测试过,但是您基本上只需要使用isinstance来追加字符串或添加(连接)列表。
答案 4 :(得分:0)
为了创建这样的列表,您需要使用extend方法。但是,如果您传递一个字符串,它将把字符串的字符扩展到列表中,因此您需要一个convert函数来省略它。此函数检查变量是否为列表,如果是,则返回该变量,否则,如果为字符串,则创建一个元素(字符串)的列表。
a = 'apples'
b = 'pears'
c = ['grapes', 'bananas', 'kiwis']
def convert(a):
if type(a)==list:
return a
elif type(a)==str:
return [a]
d=[]
for i in [a,b,c]:
d.extend(convert(i))
print(d)