在Python中,While循环使用单引号表示条件



我在Python中看到了以下一行代码,我一直在想它到底能做什么:

while '' in myList:
    myList.remove('')

提前谢谢。

它从列表中删除所有空字符串,效率很低。

CCD_ 1测试CCD_ 2是否是CCD_ 3的成员;它将在CCD_ 4上循环以扫描该值。myList.remove('')扫描myList以找到列表中等于''的第一个元素,并将其从列表中删除:

>>> myList ['', 'not empty']
>>> '' in myList
True
>>> myList.remove('')
>>> myList
['not empty']
>>> '' in myList
False

因此,代码重复扫描myList以查找空字符串,每次找到一个,都会执行另一次扫描以删除该空字符串。

myList = [v for v in myList if v != '']

将是一种不同的、更有效的方式来完成相同的任务。这使用了列表理解;循环myList中的所有值,并根据这些值构建一个新的列表对象,前提是这些值不等于空字符串。

简单地说,它从'' in myList0中删除所有空字符串。

以下是一个细分:

# While there are empty strings in `myList`...
while '' in myList:
    # ...call `myList.remove` with an empty string as its argument.
    # This will remove the one that is currently the closest to the start of the list.
    myList.remove('')

然而,请注意,通过列表理解,你可以做得更好(更有效):

myList = [x for x in myList if x != '']

或者,如果myList纯粹是字符串列表:

# Empty strings evaluate to `False` in Python
myList = [x for x in myList if x]

如果myList是一个字符串列表,并且您使用的是Python2.x,那么您可以使用filter,它甚至更短:

myList = filter(None, myList)

在Python中,两个单引号''或双引号""表示空字符串。

保持循环的条件是while—列表中存在空字符串,并且只有在没有空字符串时才会终止。

因此,它从列表中删除所有空字符串。

最新更新