我有 我嘗試使用 我是Python的新手,所以希望能得到一些解釋和解決方案。
uj5u.com熱心網友回復: 你想在索引上回圈,而不是在串列的元素上回圈。
所以我們在這里需要的是
我會留下幾個單行本,你可以在你的Python之旅中走得更遠時再回來看看。
祝你好運! uj5u.com熱心網友回復: (因為你說你是python的新手,我為你發送另一種方法,也許對你有幫助。) 你可以使用 輸出: uj5u.com熱心網友回復: 你的主要問題是你在迭代 最簡單的方法是簡單地遍歷索引而不是元素: 如果你可以假設兩個串列總是相同的長度,你可以利用 或者更簡單地作為一個串列理解:
標籤:listA = [2,0,0,5,6,0]和listB = [4,5,7,3,2,1]/code>。我想合并這兩個串列,得到listC = [2,5,7,5,6,1]。所以基本上只需復制listA,但如果listA中的一個元素是零,就用listB中的元素替換該元素。
for和if回圈,但沒有成功:listC = [] 。
for i in listA and listB:
if listA[i] == 0:
listC.append(listB[i])
else:
listC.append(listA[i])
for i in range(len(listA))。
我們可以進一步分解這個運算式,以獲得更好的理解:
len(listA)給出了串列A中的元素數。顯然,只有當listA和listB具有相同的元素數時,這個解決方案才有效。在你的例子中,len(listA)等于5range(len(listA))將遍歷一個range的整數:從0到len(listA) - 1。對于我們運行的例子,這將是range(5),所以從0到4for i in range(len(listA))然后只是在i = [0, 1, 2, 3, 4]上回圈。
listA = [2,0, 0,5,6, 0]
listB = [4,5,7,3,2, >1]
listC = []
for i in range(len(listA))。
if listA[i] == 0:
listC.append(listB[i])
else:
listC.append(listA[i])
print(listC) # [2, 5, 7, 5, 6, 1]/span>
listC = [b if a == 0 else a for (a, b) in zip(listA, listB)]/code>list(map(lambda ab: ab[1] if ab[0] == 0 else ab[0], zip(listA, listB))enumerate。使用enumerate,你可以遍歷index和listA中的value,當listA的值==0時,你可以用index轉到listB并在listB中得到value,然后將值插入到listA。
listA = [2,0, 0,5,6, 0]
listB = [4,5,7,3,2, >1]
for index, value in enumerate(listA)。
if listA[index] == 0:
listA[index] = listB[index].
print(listA)
[2, 5, 7, 5, 6, 1]
listB的元素,而不是索引,所以當你在索引串列時,你沒有拉到正確的值。這里有兩個選擇。
for i in range(len(listA))。
if listA[i] == 0:
listC.append(listB[i])
else:
listC.append(listA[i])
zip來同時迭代兩個串列的元素:for a, b in zip(istA, listb):
if a == 0:
listC.append(b)
else:
listC.append(a)
[b if a == 0 else a for a。b in zip(listA, listB) ]
