Python中对条件使用单引号的While循环

2024-04-25 19:42:50 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

提前谢谢。在


Tags: 代码inremovewhilemylist
3条回答

简单地说,它删除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可以更好地(更有效地)实现这一点:

^{pr2}$

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

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

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

myList = filter(None, myList)

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

保持循环的条件是while空字符串存在于列表中,并且仅在不再有空字符串时终止。在

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

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

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

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

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

^{pr2}$

是完成同样任务的另一种更有效的方法。这将使用list comprehension;循环myList中的所有值,并根据这些值构建一个新的list对象,前提是它们不等于空字符串。在

相关问题 更多 >