如何比较python中的空列表和字符串列表?

问题描述:

我有两个列表,data1data2如何比较python中的空列表和字符串列表?

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

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

我想要的值在每个列表的第二个位置进行比较。

我现在用的是下面这段代码对它们进行比较,但它仅打印“一等于C”而不是“B等于d”,它是打印以下结果:

“ Value_a:你好世界,Value_b:[],Value_c:世界你好,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等于d'?什么样的方式是一个空列表等于(或相同,这是你用'is'测试的 - 相等是'==')字符串''问候''? – jonrsharpe

+2

另外,你在列表中有一个元组内的字符串。 'data1'的第一个元素是'('hello world',[])',并且没有第二个元素。 –

+2

检查您的缩进。 'b是d'只会在'a是c'时也会因为缩进而触发 – TLOwater

...它是只打印a equals to c但不b equals to d ...

1 - b is d只执行如果a is ctrue,你需要修复的压痕

2 - is将返回True如果两个变量指向同一个对象,==如果对象被称为变量是相等的。


你可能最终了类似:

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

使用“==”而不是“is” “?http:// stackoverflow。com/questions/132988/is-there-a-difference-between-is-in-python – FLab

+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) 

也许你需要阅读:Understanding Python's "is" operator

此外,数据2包含两个字符串,同时DATA1包含一个字符串和一个空列表。