2015-11-19 24 views
5

acemi, eşitlik için bir problemle karşılaştı. Listelerim var, durumlar []; her durum x, bu özel durumda x = 3, Boole değerleri içerir. Programımda, ilk üçü bir [i] durumuna karşılık gelen Boole değerlerinin bir listesini oluşturur. Eşitlik için test edilen eyaletler listesinden geçiyorum (bunlardan biri, tüm olası boole permütasyonları eyalette olduğu gibi doğrudur, ancak eşitlik asla tespit edilmez. Hiçbir ipucu neden, burada test etmek için değiştirdiğim bir koddur:Listeler aynı değil ama eşit kabul edilmiyor? Python'da

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' 
Bu durumda

, propisitons uzunluğu bu koddan almak çıkışı 3. geçerli:?

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

bu parantez içinde farkı ile ilgisi gerçeği ile ilgisi vardır tahmin ediyorum [0] bir liste içinde bir liste nedir? Şerefe:

+3

'durumlar [0]', bir liste değil, bir tupledır. Brace/parens tatları Python'da çok önemlidir. –

+0

Evet, şimdi onu görüyorum. Durumları doldurmak için yerleşik bir işlev kullandım ve bu işlevin, listeler değil, tuplelar oluşturduğunu bilmiyordum; Tupleleri bile bilmiyordum. Teşekkürler, bunu akılda tutacak. – Bergy24

cevap

8

Sen c Bir listeye Tabii[True, True, True]

farklılar karşı başlığın(True, True, True) omparing.

deneyin döküm senin on-the-go listtuple için, karşılaştırma:

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' 

Veya on-the-go tuplelist için, karşılaştırma senin döküm:

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' 

Çıkış:

+0

Ben durumları doldurmak için yerleşik bir işlev kullandım [], onlar tuples yapıldığını bilmiyordum; Daha önce hiç tuple bile kullanmadım, onları okumalıyım, çok teşekkürler. – Bergy24

+1

@ Bergy24 Cevabımın yardımcı olmasına sevindim. Sorunu çözmene yardım ederse cevabımı kabul etmeyi unutmayın :) –

İlgili konular