Python:在if语句条件下从列表中删除项目?

时间:2018-07-23 14:21:52

标签: python list if-statement

我有此代码:

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语句为假?

5 个答案:

答案 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,因此在您的代码中它等于ValueErrorHere is a link to the relevant docs for further reading

答案 2 :(得分:1)

由于.removeComboBox一样,它不返回任何内容。因此,它隐式返回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)