我有此代码:
myList = [1, 2, 3, 4, 5]
if (myList.remove(4)):
print "We removed 4, so this is true!"
print myList
当我运行它时,这就是我得到的:
[1, 2, 3, 5]
因此,似乎已按照if语句的条件从列表中删除了“ 4”,但由于print语句未打印到控制台,因此if语句最终并未成为“ True”。为什么if语句为假?
答案 0 :(得分:6)
False
不会 不 返回myList.remove(4)
或True
,具体取决于False
操作是否成功
相反,如果成功,它将不返回任何内容(即remove
),否则返回None
。
因此
ValueError
翻译为
if mylist.remove(4):
是if None:
答案 1 :(得分:3)
从文档中
list.remove(x) 从列表中删除值等于x的第一项。如果没有这样的项目,那就是错误。
因此,df.select(cols)
返回.remove()
或引发None
,因此在您的代码中它等于ValueError
。 Here is a link to the relevant docs for further reading。
答案 2 :(得分:1)
由于.remove
与ComboBox
一样,它不返回任何内容。因此,它隐式返回del
,该值在布尔表达式中的值为None
。
答案 3 :(得分:1)
remove函数实际上不返回任何内容。因此,如果if语句检查一个值,则不会得到一个,这意味着if语句将导致错误。
myList = [1, 2, 3, 4, 5]
var1 = myList[3]
if var1:
print "1 - Got a true expression value"
print var1
var2 = myList.remove(4) # Nothing returned (var2 = None)
if var2: # if statement fails because var2 is None
print "2 - Got a true expression value"
print var2
print myList
在执行代码时将产生以下结果
1 - Got a true expression value
4
[1,2,3,5]
答案 4 :(得分:0)
列表的.remove
方法在找到该项目时返回None
,如果找不到则抛出错误。
这里是一种选择:
a=[1,2,3,4]
try:
a.remove(4)
print "we removed 4, so this is true!"
except:
pass
print(a)