2015-11-04 73 views
0

下面是該程序的任務:使用python比較兩個列表。爲什麼Python比較第一個列表的第一個數字和第二個列表的所有數字?

寫一個程序,listcomp1.py,其比較兩個相等長度的列表由用戶輸入。應創建由0和1組成的第三個列表,以跟蹤列表之間的差異。差異列表中的索引i處的0表示被比較的兩個列表中的索引i處的項目是相同的。差異列表中索引i處的1表示比較列表中索引i處的項目不同。

輸入:每次兩個輸出由用戶,一個輸入列表:一個0和1的示出的組成的列表,其中在所述兩個列表中的項目進行比較是相同的或不同

def main(): 
    mylist = [5,7,7,8] 
    mylist1 = [5,6,7,8] 
    return_val = 0 
    final_list = [0] 
    num1 = mylist1[] 
    for num in mylist: 
     if num == num1: 
      return_val = 0 
     else: 
      return_val = 1 
    final_list.append(return_val) 

main() 
+1

哼......這不是PHP,我不認爲'mylist1 []'在Python中是慣用的。 –

+0

以及其他您需要將'final_list.append(return_val)'縮進一次的問題。 –

回答

0

由於你已經設置了num1 = mylist1[](我不知道這是有效的Python)。您應該跟蹤索引,並使用相同的索引來索引這兩個列表。

即:

for i in range(len(mylist)): 
    if mylist[i] == mylist1[i]: 
     # stuff 
    else: 
     # other stuff 

更妙的是,使用一個枚舉

for i, val in enumerate(mylist): 
    if val == mylist1[i]: 
     # stuff 
    else: 
     # other stuff 
1

一個內膽:

[ int(i != j) for i,j in zip(mylist, mylist1)] 

但是,如果你不能找出爲什麼這個作品,然後我仍然認爲你不會在課堂上表現出色。

+2

必須使用'!='而不是'==' –

+0

啊,謝謝。沒有仔細閱讀。 – RobertB

+0

我們爲什麼要幫他做作業? – Tom

2

更容易和PEP 8兼容的方式來做到這一點。

def main(): 
    my_list = [5, 7, 7, 8] 
    my_list_1 = [5, 6, 7, 8] 
    return [0 if x == y else 1 for x, y in zip(mylist, my_list_1)] 


print(main()) 

另外,您可能會使用列表推導和三元運算符得到一些額外的積分。 ;)

0

我相信你能做到這樣的:

mylist = [5,7,7,8] 
    mylist1 = [5,6,7,8] 
    return_val = 0 
    final_list = [0] 
    num1 = mylist1 
    for num,num1 in zip(mylist,mylist1): 
     if num == num1: 
      return_val = 0 
     else: 
      return_val = 1 
     final_list.append(return_val) 

    print final_list 

要知道,蟒蛇是明智的壓痕,因此在你的代碼final_list.append(return_val)被錯誤放置。此外,你需要迭代兩個數組,而不僅僅是一個。所以你的測試num == num1沒有意義。

0
SAME, DIFFERENT = 0, 1 

def get_list(prompt, dtype=lambda s:s): 
    return [dtype(s) for s in input(prompt).split()] 

def main(): 
    list1 = get_list("Please enter a space-separated list of integers: ", int) 
    list2 = get_list("And again: ", int) 
    differences = [SAME if a==b else DIFFERENT for a,b in zip(list1, list2)] 
    print(differences) 

if __name__=="__main__": 
    main() 
相關問題