2013-04-03 62 views
0

我有3個表:如何測試一個列表的兩個元素,如果他們是等價的地方一個列表的元素成爲一個新列表

neighbour = [] 
scanned = [[],[]] 
localisation = [[],[],[]] 

我要測試的第0子列表(每個項目列),以查看它是否等同於鄰居列表中的任何項目。

如果相當,我想將掃描的子列表追加到本地化的第1和第2子列表。

我相信,如果在掃描的第0子列表中的項目相匹配的鄰居子列表中的任何項目本次測試將檢查:

for i in scanned[0]: 
    for j in neighbour: 
     if i == j: 

,但我不知道如何將掃描到的第一個兩子列表追加和本地化的第二個子列表。

任何想法?

+1

看看python集。 – 2013-04-03 19:55:47

+1

你能舉一個例子輸出嗎? – 2013-04-03 20:03:40

回答

2

那麼,我可能會用不同的方式來構建你的列表,但我會在一分鐘內得到。

做你想要做什麼,你需要在一個更老派的方式來遍歷:

neighbour = ['a', 'b', 'c'] 
scanned = [['a', 'b'],[1, 2]] 
localisation = [[],[],[]] 

for i in range(len(scanned[0])): 
    if scanned[0][i] in neighbour: 
     localisation[1].append(scanned[0][i]) 
     localisation[2].append(scanned[1][i]) 
print localisation 
>>> [[], ['a', 'b'], [1, 2]] 

這是假設我(終於)瞭解你想要什麼正確。然而,它看起來像scanned實際上是兩個列表,其中一個列表中的每個元素以某種方式與另一個列表中的相同索引元素相關。你的生活可能會通過使用dict改爲由一個公平位更容易:

# The keys from the dict are from scanned[0]; the values are from scanned[1] 
scanned = {'a':1, 'b':2} 
具有與這些名單做

現在一切都比較容易的方式(包括您有任何其他與他們無關),因爲你不不必分開跟蹤您的指數:

neighbour = ['a', 'b', 'c'] 
scanned = {'a':1, 'b':2} 
localisation = [[], [], []] 

for s in scanned: 
    if s in neighbour: 
     localisation[1].append(s) 
     localisation[2].append(scanned[s]) 

print localisation 
>>> [[], ['a', 'b'], [1, 2]] 
+0

'本地化[1] .append(掃描[1] [i])'我想。糾正我,如果我錯了,不知道我是否理解這個問題。 – 2013-04-03 20:01:00

+0

@MarkusMeskanen我認爲你是對的;我不積極,我知道他到底想要什麼。儘管如此,這絕對是我的錯字。 – 2013-04-03 20:06:36

+0

嗨我想本地化的第0子列表在其他地方宣佈,但其餘的正是我的意思,對不起,我的帖子有點尷尬措辭 - 我剛剛開始與Python,所以我不確定所有正確的條款。 – 2013-04-03 20:24:06

1

與NLP Stemming相關的問題?如果是這樣,請看看Python NLTK

生成每個子列表匹配的元素列表中scanned

for l in scanned: 
    localisation.append(set(l).intersection(neighbour)) 

你的定義是有點迷惑,我不知道如果我明白你想要什麼。假設len(scanned[0]) == len(scanned[1])

matches = set(neighbour).intersection(scanned[0]) 
for match in matches: 
    i = scanned.index(match) 
    localisation.append((match, scanned[0][i], scanned[1][i])) 

在這種情況下的字典比列表的列表更好。

neighbour = ['Good morning', 'Good afternoon'] 
scanned = {'Good morning': 'Buenos dias', 'Good night': 'Buenas noches'} 
localisation = [] 

matches = set(neighbour).intersection(scanned.keys()) 
for match in matches: 
    localisation.append((match, scanned[match])) 

請提供樣本輸入和預期輸出。

相關問題