簡體   English   中英

我應該如何在一個列表中找到並替換另一個列表(python)?

[英]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.

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