[英]How to create a new list by adding a string to existing list without changing the existing list in python?
[英]How to create new list by adding existing lists using for loop
我想將一個嵌套列表中的單詞與中間的單詞“and”連接起來。 例如:
l1 = [帕特里克、彼得、傑羅姆]、[麗莎、凱倫、愛麗絲]
l2 應該是:[Patrick 和 Lisa,Peter 和 Karen,Jerome 和 Alice]
無論嵌套列表中是否有 2,3 或任何數量的列表,代碼都不應該有所不同。
我嘗試迭代變量中的列表范圍,然后將結果 append 迭代到一個新變量。 但是,結果只是第一個組合,或者結果在第二個組合之后結束。
def names(one):
newlist = []
x = 0
for y in range(len(one)):
newlist.append(one[x][y] + " and " + one[x+1][y])
x += 1
return newlist
['帕特里克和麗莎']
是我到現在為止的。 我知道這與迭代有關,但由於我對 python 很陌生,所以我被卡住了。
似乎l1
是兩個元素的元組。 使用以下內容:
l2 = []
for name_a, name_b in zip(l1[0], l1[1]):
l2.append(name_a + ' and ' + name_b)
如果您使用的是 Python 3.6+,您可以使用 f 字符串:
l2 = []
for name_a, name_b in zip(l1[0], l1[1]):
l2.append(f'{name_a} and {name_b}')
另請記住,您也可以使用列表理解。
Python 3.6+
l2 = [f'{name_a} and {name_b}' for name_a, name_b in zip(l1[0], l1[1])]
l2 = [name_a + ' and ' + name_b for name_a, name_b in zip(l1[0], l1[1])]
注意:如果不允許使用zip
,請使用range
並使用索引符號,如下所示:
l2 = []
for i in range(len(l1[0])):
name_a = l1[0][i]
name_b = l1[1][i]
l2.append(name_a + ' and ' + name_b)
更新:根據之前的評論,您應該使用以下內容:
l2 = []
for i in range(len(l1[0])):
l2.append(' and '.join(e[i] for e in l1))
您可以使用zip
從子列表中獲取名稱的組合,並且列表中“and”重復了第一個列表中存在元素的次數one[0]
:
one = [['Patrick', 'Peter', 'Jerome'], ['Lisa', 'Karen', 'Alice']]
name_tup = zip(one[0], ["and"] * len(one[0]), one[1])
然后使用列表推導從zip
返回的元組生成輸出列表。 使用 unpacking 三個元素通過使用join
function 之間的空格連接:
list = [ " ".join([x, y, z]) for x, y, z in name_tup]
>>> list
['Patrick and Lisa', 'Peter and Karen', 'Jerome and Alice']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.