2017-04-25 8 views
0

私は2つのリスト、data1data2持っている:私は、各リストの2番目の位置に値を比較したい空リストとPythonの文字列のリストを比較するには?

data1 = [('hello world', [])] 

data2 = [('hello world', 'greetings')] 

を。 「

:私はそれらを比較するために次のコードを使用していますが、「bはDに等しい」と、それは次の結果を印刷しているだけで「AはCに等しい」の印刷ではなく、

Value_a:Hello Worldの、Value_b:[]、Value_c:Hello Worldの、Value_d:挨拶」

for a,b in data1: 
    for c,d in data2: 
     print("Value_a: %s, Value_b: %s,Value_c: %s,Value_d: %s,"%(a,b,c,d)) 
     if a is c: 
      print("a is equal to c") 
      if b is d: 
       print("b is equal to d") 
       count+= 1 
       print("Count = ",count) 
+3

なぜ* *それは 'b equals to d'ですか?どのような意味で空リストは 'is 'でテストしているものと等しいか等しいです - 等式は' == 'です)' greetings'という文字列ですか? – jonrsharpe

+2

また、リスト内のタプルの中に文字列があります。 'data1'の最初の要素は'( 'hello world'、[]) 'であり、2番目の要素はありません。 –

+2

インデントを確認してください。インデントのために 'a is c 'の場合にだけ' b is d'がトリガーされます – TLOwater

答えて

1

...それが印刷されるだけではなくa equals to cb equals to d ...

1 - 2つの変数が同じオブジェクト、==を指している場合、オブジェクトはによって参照される場合isTrueを返します - b is dだけa is ctrueであれば、あなたは

2は、インデントを修正する必要がを実行変数は等しい。


おそらく終わるアップだろうようなもので:

for a, b in data1: 
    for c, d in data2: 
     print("Value_a: %s, Value_b: %s,Value_c: %s,Value_d: %s," % (a, b, c, d)) 
     if a == c: 
      print("a is equal to c") 
     if b == d: 
      print("b is equal to d") 
      count += 1 
      print("Count = ", count) 

注:

Is there a difference between == and is in Python?

+0

" == "の代わりに" = "?http:// stackoverflow。com/questions/132988/is-there-a-difference-and-in-python – FLab

+0

あなたがコメントした時、私は答えを更新していました。とにかくTks。 –

0

ユアーズあなたの例のために働く必要がありますが、長く比較しますペアごとに一覧表示する

for (a,b),(c,d) in zip(data1,data2): 

    print("Value_a: %s, Value_b: %s,Value_c: %s,Value_d: %s,"%(a,b,c,d)) 
    if a is c: 
     print("a is equal to c") 
     if b is d: 
      print("b is equal to d") 
      count+= 1 
      print("Count = ",count) 
0

はたぶん、あなたはこれを読んでする必要があります。Understanding Python's "is" operator

また、DATA2は、2つの文字列を含んでいる一方DATA1は、1つの文字列と1つの空のリストが含まれています。

関連する問題