簡體   English   中英

創建新列表時(根據兩個單獨的源列表中的數據)-難以正確添加源數據。 (蟒蛇)

[英]When creating a new list (from data in two separate source lists) - having difficulty adding source data correctly. (Python)

我正在嘗試將兩個列表加在一起並創建第三個列表。

我的第一個列表沒有每個列表元素的值。

因此,如果列表一中有值,我只想創建一個包含列表1和2中列表元素之和的第三列表。

這部分工作正常-但是,當我嘗試將值加在一起時-它不會保留列表1和2中的值。

(請參見下面的期望輸出以消除歧義)

這是代碼:

z=0
for i, val in enumerate(okay_to_gl):
    if val is not None:
        for x, val2 in enumerate(okay_to_zn):
            if x == i:
                print(val)
                print(val2)
                output_array_1 = val[z]+val2[z]
                z = z + 1
                print(output_array_1)

這是輸出:

在此處輸入圖片說明

val = OK,val2 = to ZA,所以我要output_array [0] = OKto ZA

因此,所需的輸出將是:

托扎

OKtoZA ...等等。

SO output_array_1 =(val + val2,val + val2,val + val2)其中val和val2在列表的枚舉迭代過程中從其值傳遞。

您要打印兩行,因為您有兩個打印調用:

print(val)
print(val2)

只需將它們替換為一個打印調用即可:

print(val + val2)

而且,您在選擇編碼時不必要地浪費了很多周期:

    for x, val2 in enumerate(okay_to_zn):
        if x == i:

只是說val2 = okay_to_zn[i]列表可索引的!

這可以簡單地使用zip函數列表理解來完成:

>>> list1 = ['a', 'b', None, 'c', 'd']
>>> list2 = ['q', 'w', 'e', None, 'r', 't']
>>> [x + y for x, y in zip(list1, list2) if not (x is None or y is None)]
['aq', 'bw', 'dr']

通常是合並數組:

a = [1,2,3]
b = [4,5]
c = a+b
print c

輸出:

[1, 2, 4, 6, 7, 8]

在您的情況下,實現此目標的方法是:

list1 = ["ok","not_ok","fine",None,"",89]
list2 = ["B","7","train",3]

N=min(len(list1),len(list2))

new_list = []
for iterator in range(N):
    val1 = list1[iterator]
    val2 = list2[iterator]
    if val1 is not None and val2 is not None :
        new_list.append(val1 + val2)

print new_list

輸出:

['okB', 'not_ok7', 'finetrain']

如果只關心list1不等於0,則可以添加:

for iterator in range(N,len(list1)):
    val1 = list1[iterator]
    if val1 is not None:
        new_list.append(val1)
print new_list

暫無
暫無

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

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