2015-07-13 75 views
0

當我運行下面的代碼:排號蟒陣列

array1 = ["happy", "sad","good", "bad","like"] 
array2=["i like starhub", "i am happy with the starhub service", "starhub is  bad"," this is not awful"] 

for i in array1: 
    for j in array2: 
     if i in j : 
      print i 

印刷將是

happy 
bad 
like 

輸出根據他們在array1列出的順序打印的結果。我如何根據array2對輸出進行排序?我想輸出是:

like 
happy 
bad 

回答

1

Leb的答案是正確的錢;請註冊並接受它。

我只想添加關於命名約定的註釋。

在許多編程語言中,變量名稱ij傳統上用於數字循環索引,但不適用於列表或數組中元素的實際值。

例如(雙關語意),如果你正在寫在JavaScript老式for循環,它可能是這樣的:

var names = [ "Kent", "Leb", "Dalen" ]; 
for(var i = 0; i < names.length; i++) { 
    console.log(names[i]); 
} 

你也可以這樣寫在Python代碼,但因爲你'使用更具表現力的Python for循環,您可以使用比ij更好的名稱。

由於達倫的評論指出,該名array1array2不匹配的Python術語—但更重要的是,他們沒有說什麼是這些列表什麼。

在整個過程中使用更多不言自明的變量名是有幫助的。在你的代碼中,這兩個列表是一個單詞列表和一個短語列表,循環中的變量代表單個單詞和單個短語。

我在這裏喜歡的約定是使用複數名稱作爲列表或數組,以及該列表或數組的單個元素的相應單數名稱。

所以,你可以使用的名稱是這樣的:

words = [ "happy", "sad", "good", "bad", "like" ] 
phrases = [ 
    "i like starhub", 
    "i am happy with the starhub service", 
    "starhub is bad", 
    " this is not awful" 
] 

for phrase in phrases: 
    for word in words: 
     if word in phrase: 
      print(word) 

你看到多少更加清晰,這使得代碼?而不是ijarray1array2(或list1list2),每個名稱都描述了您正在使用的實際數據。

4

開關循環:

list1 = ["happy", "sad", "good", "bad", "like"] 
list2 = ["i like starhub", "i am happy with the starhub service", "starhub is bad", " this is not awful"] 

for j in list2: 
    for i in list1: 
     if i in j: 
      print(i) 


>>like 
>>happy 
>>bad 

在頂部的一個被什麼東西被作爲主要的清單。所以在你的情況下,list1是主要的,正在排序。

在我給的那個,list2是主要的。

+0

你在這裏使用的不是數組。這些是列表。 Python中的數組是:「import array; a1 = array.array([1,2,3])」。請修改您的帖子,以免它人混淆。 – Dalen

+0

你是對的,謝謝你提醒我注意。 – Leb

+0

Woops,它的:array.array(「h」,[1,2,3])。對不起,忘了你必須指定類型。 – Dalen