while循环使用单引号表示Python中的条件

时间:2013-11-22 18:59:07

标签: python while-loop

我在Python中遇到了以下代码行,我一直在想它究竟做了什么:

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

提前致谢。

3 个答案:

答案 0 :(得分:4)

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

'' in myList测试''myList的成员;它将循环遍历myList以扫描该值。 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中的所有值,并根据这些值构建 new 列表对象,前提是它们不等于空字符串。

答案 1 :(得分:1)

简单地说,它会从myList删除所有空字符串。

以下是细分:

# 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('')

但请注意,使用list comprehension

可以更好地(更有效地)执行此操作
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是字符串列表且您使用的是Python 2.x,则可以使用更短的filter

myList = filter(None, myList)

答案 2 :(得分:0)

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

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

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