2015-11-19 10 views
5

Pythonの初心者は、同等性のテストで問題が発生しました。私はリスト、状態[]のリストを持っています。各状態には、x = 3のブール値が含まれています。私のプログラムでは、最初の3つが状態[i]に対応するブール値のリストを生成します。私はそれをテストするために修正したコードをいくつか紹介します:リストは同じですが、等しくはありませんか?

temp1 = [] 
for boolean in aggregate: 
    temp1.append(boolean) 
if len(temp1) == len(propositions): 
    break 
print temp1 
print states[0] 
if temp1 == states[0]: 
    print 'True' 
else: 
    print 'False' 
この場合

、propisitonsの長さは、私はこのコードから取得3.出力されます。

[True, True, True] 
(True, True, True) 
False 

私は、これは括弧の違いに関係している推測しているという事実とは何か?その状態[0]はリスト内のリストですか?いいえ。

+3

'states [0]'はタプルであり、リストではありません。ブレース/括弧は、Pythonでは非常に重要です。 –

+0

ええ、私は今それを参照してください。私は、組み込みの関数を使用して状態を生成し、その関数がリストではなくタプルを作成したことを知らなかった。私はタプルを知らなかった。ありがとう、それを念頭に置くでしょう。 – Bergy24

答えて

8

あなたはcです彼らは別のだ。もちろん、タプルリストに対して(True, True, True)[True, True, True]

をomparing。

てみキャストあなたに、外出先listtupleに、比較する:

temp1 = [] 
for boolean in aggregate: 
    temp1.append(boolean) 
if len(temp1) == len(propositions): 
    break 
print temp1 
print states[0] 
if tuple(temp1) == states[0]: 
    print 'True' 
else: 
    print 'False' 

またはオン-行くtuplelistに、比較するためにあなたのキャスト:

temp1 = [] 
for boolean in aggregate: 
    temp1.append(boolean) 
if len(temp1) == len(propositions): 
    break 
print temp1 
print states[0] 
if temp1 == list(states[0]): 
    print 'True' 
else: 
    print 'False' 

出力:

[True, True, True] 
(True, True, True) 
True 
+0

私はstate []に​​データを組み込むための組み込み関数を使用しましたが、それらはタプルが作成されていることを知らなかった。私は前にタプルを使ったことさえありませんでした。 – Bergy24

+1

@ Bergy24私の答えは助けてくれてうれしいです。あなたが問題を解決するのに役立ちましたら、私の答えを受け入れることを忘れないでください:) –

関連する問題