2016-07-16 8 views
1

の3番目の要素と同じタプルである:私は新しいリストに追加する、唯一の第三の要素は、たとえば、タプルのリストにソートした後に最初のタプル

jen = (34,54,15) , (34,65,15), (34, 78,89) ... 

私は新しいリストにインスタンスのための新たなリストのみ含まれている必要があります最初のタプルの3番目の要素が含まれている唯一のタプルを追加しようとしています:ここで

(34,54,15) 
(34,65,15) 

は私の擬似コードです:

Salvation_array = [] 
    For lines in jen: 
    Num = 0 
    If jen[0] [:-2] = Num: 
    Salvation_array.append(Num) 

私はこれと本当に混乱しています。何か助けてもらえますか?

+0

明確にするため、「第三の要素が含まれているタプルは、」第三の要素がなければならない「を意味しません同じであるか、または "3番目の要素_anywhere_を含む必要がありますか?" –

+0

これが '(34,54,15)、(34,65,15)、(34,15,89)' – danidee

+0

の場合、出力はどのようになるべきですか?いいえ、何もできません。最初のタイプルの3番目の要素のみを比較します。 –

答えて

1

これは簡単にfilterメソッドで行うことができます。

1回のライナーfilterコールで:

array1 = [(34,54,15) , (34,65,15), (34, 78,89)] 
array2 = filter(lambda element: element[2] == array[0][2], array) 
print array2 
[(34, 54, 15), (34, 65, 15)] 

あなたはfilterhereのマニュアルを確認することができます。 したがって、基本的にはfilter(some_function(e) , array)は、配列の各要素eを反復処理し、条件を満たすかどうかをテストします。このチェックは、some_function(e)というコールを使用して行われます。この関数がTrueを返した場合は、要素eが保持されます。

また、あなたはPythonの初心者だと言いましたので、私はあなたがPythonでlambdaを知らないかもしれないと思います。だから、基本的に1つのライナー無名関数としてそれらを取ることができます。あなたが同等であることを、次の考えることができる:私が正しく要件を理解している場合lambda x: print xdef printit(x): print x;あなたはおよそlambdahere

を確認することができますが、それが役立ちます:)

+0

ヒントとガイドラインをありがとうございます。確かに非常に役立つ –

1

を願って、これはあなたが欲しいものを行う必要があります。

jen = (34,54,15), (34,65,15), (34, 78,89) 

salvation_army = [j for j in jen if j[2] == jen[0][2]] 

print(salvation_army) 

# Output: 
# [(34, 54, 15), (34, 65, 15)] 

@ Harshの答えに似ていますが、filterではなくリストの理解度を使用しています。 (これは好みの問題です。)あなたがやろうとしていたものの線に沿って、より

何か:

salvation_army = [] 
desired_value = jen[0][2] 

for line in jen: 
    if line[2] == desired_value: 
     salvation_army.append(line) 
+0

素敵な答え、私はリストの理解をより多く使用する必要があります! –

+0

OMGは1行のコードで何をしたいのですか?とても印象深い、ありがとう。彼がパイソンを知っていれば、誰かが危険にさらされる可能性は想像もつきません。 –

関連する問題