簡體   English   中英

將任意數量的列表元素連接到一個字符串列表python

[英]Join elements of an arbitrary number of lists into one list of strings python

我想將兩個列表的元素合並到一個列表中,並添加一些字符,如下所示:

list_1 = ['some1','some2','some3']
list_2 = ['thing1','thing2','thing3']

joined_list = ['some1_thing1', 'some2_thing2', 'some3_thing3']

但是我事先不知道我要為多少個列表做准備,即我想為任意數量的列表做這個准備

另外,我目前收到以下形式的列表:

list_A = [('some1','thing1'),('some2','thing2'),('some3','thing3')]

所以我將其分成如下列表:

list_B = [i for i in zip(*list_A)]

我這樣做是因為有時我有一個int而不是一個字符串

list_A = [('some1','thing1',32),('some1','thing1',42),('some2','thing3', 52)] 

所以我以后可以做

list_C = [list(map(str,list_B[i])) for i in range(0,len(list_B)]

和基本上list_1list_2是的元素list_C

那么,有沒有更有效的方法來完成所有這些工作?

如果您使用的是python> = 3.6,請嘗試以下操作:

[f'{i}_{j}' for i,j in zip(list_1, list_2)]

如果您使用python3.5,則可以執行以下操作:

 ['{}_{}'.format(i,j) for i,j in zip(list_1, list_2)]

如果您不想使用格式化的字符串,也可以使用它:

['_'.join([i,j]) for i,j in zip(list_1, list_2)]

您可以在基本list_A本身上join函數,無需將其split為可能的int值:

list_A = [('some1','thing1',32),('some1','thing1',42), ('some2','thing3', 52)] 
["_".join(map(str, i)) for i in list_A]

輸出:

['some1_thing1_32', 'some1_thing1_42', 'some2_thing3_52']

更新:

根據您的要求,要在list_A忽略最后一個tuple最后一個元素,需要在list-comprehension內部添加if-else條件,如下所示:

["_".join(map(str, i)) if list_A.index(i) != len(list_A)-1 else "_".join(map(str, i[:-1])) for i in list_A  ]

更新的輸出:

['some1_thing1_32', 'some1_thing1_42', 'some2_thing3']

為了忽略list_A中每個元組的最后一個元素,我發現這是最快的方法:

["_".join(map(str, i)) for i in [x[:-1] for x in list_A] ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM