将字符串和字符串列表组合到一个大列表中

时间:2019-02-04 22:41:23

标签: python

我只有这样的变量或字符串列表(但不仅仅是我的三个代码中的变量):

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。没有顺序显示字符串/列表。这肯定是一个非常简单和愚蠢的问题,但我找不到答案-如果重复...表示歉意...

编辑:

由于上面的例子被指出太简单了:我有一个很大的变量列表,其中一些只是字符串,而有些则是字符串列表。它们没有顺序,我想知道是否有一种简便的方法可以将它们组合在一起,而无需手动查看哪些是字符串,哪些是列表,并分别在我的代码中处理变量。如果不可能,那也是一个答案。

5 个答案:

答案 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)