如何比较python中的空列表和字符串列表?
我有两个列表,data1
和data2
:如何比较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)
...它是只打印
a equals to c
但不b equals to d
...
1 - b is d
只执行如果a is c
是true
,你需要修复的压痕
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” “?http:// stackoverflow。com/questions/132988/is-there-a-difference-between-is-in-python – FLab
当你评论时,我正在更新答案。无论如何。 –
此致应该适用于你的榜样,但更长的比较成对列出
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)
为什么*会打印'b等于d'?什么样的方式是一个空列表等于(或相同,这是你用'is'测试的 - 相等是'==')字符串''问候''? – jonrsharpe
另外,你在列表中有一个元组内的字符串。 'data1'的第一个元素是'('hello world',[])',并且没有第二个元素。 –
检查您的缩进。 'b是d'只会在'a是c'时也会因为缩进而触发 – TLOwater