[英]How should i find in a list and replace in another list(python)?
例如:想在中查找重復"a"
list = ["b","a","a","d"]
並在另一個列表中替換它:
second_list = ["_","_","_","_"]
所以 second_list 將被轉換為:
["_","a","a","_"]
我該怎么做?
想要一個沒有 zip 的解決方案,正在使用guessed_word[listed_word.index(player_guess)] = player_guess
但是重復項產生了一個錯誤,盡管zip()
有什么方法嗎?
有多種方法,但您可以使用列表理解。
list1 = list("bcad")
list2 = ["_" for x in l1]
key = "a"
list2_replaced = [item1 if item1 == key else item2 for item1, item2 in zip(list1,list2)]
解釋:
制作第一個列表(相當於 list1 = ["b", "c", "a", "d"])
list1 = list("bcad")
制作第二個列表(在您的情況下可能已經存在)
list2 = ["_" for x in l1]
定義您要查找的鍵,如果您不需要它是可變的,您也可以將“a”直接放入下面的列表理解中。
key = "a"
遍歷壓縮列表; zip 返回一個元組列表,每個元組包含列表 1 的第 i 個元素作為第一個條目 (item1),列表 2 的第 i 個元素作為第二個條目 (item2)。 如果 item1 與您的鍵匹配,則將 item1 放在第二個列表中,否則使用已經存在的項目。
list2_replaced = [item1 if item1 == key else item2 for item1, item2 in zip(list1,list2)]
可能有更好的方法,但這應該有效。
您可以將zip()
與列表推導結合起來,並使用三元if
語句從第一個列表中獲取您想要的元素,否則從第二個列表中獲取元素。
list = ["b","c","a","d"]
second_list = ["_","_","_","_"]
third_list = [(i if i == "a" else j) for (i, j) in zip(list, second_list)]
# ['_', '_', 'a', '_']
original = ["b", "d", "a", "c"]
second_list = ["_", "_", "_", "_"]
if "a" in original:
index = original.index("a")
second_list[index] = "a"
print second_list
output 如果列表中有"a"
:
['_', '_', 'a', '_']
output 如果“a”`不在列表中:
['_', '_', '_', '_']
編輯:不建議使用“_”的固定長度列表,因為每當將項目添加到original
時,都必須將匹配的"_"
添加到second_list
。 要解決這個問題,可以做
second_list = ["_"] * len(original)
這將創建一個包含 N 次"_"
的列表(N 是original
中的項目數)
這里首先我們檢查,如果元素“a”存在於第一個列表中,如果是,那么我們在第一個列表中找到“a”的索引,並將第二個列表的相應索引元素替換為“a”
In [114]: first = ["b","c","a","d"]
...: second_list = ["_","_","_","_"]
...: if "a" in first:
...: second_list[first.index("a")]="a"
...: print(second_list)
['_', '_', 'a', '_']
請嘗試以下代碼
list1 = ["b","c","a","d"]
list2 = ["_","_","_","_"]
for idx,i in enumerate(list1):
if(i == "a"):
list2[idx] = list1[idx]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.