Python中条件的While循环使用单引号
我在Python中遇到了以下代码行,我一直想知道它到底做了什么:Python中条件的While循环使用单引号,python,while-loop,Python,While Loop,我在Python中遇到了以下代码行,我一直想知道它到底做了什么: while '' in myList: myList.remove('') 提前感谢。它从列表中删除所有空字符串,效率低下 myList中的'测试'是否是myList的成员;它将在myList上循环以扫描值myList.remove(“”)扫描myList以查找列表中等于'的第一个元素,并将其从列表中删除: >>> myList ['', 'not empty'] >>> '' in
while '' in myList:
myList.remove('')
提前感谢。它从列表中删除所有空字符串,效率低下 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
中的所有值,并根据这些值构建一个新的列表对象,前提是这些值不等于空字符串。它会从列表中删除所有空字符串,效率低下
myList = [v for v in myList if v != '']
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
中的所有值,并根据这些值构建一个新的列表对象,前提是这些值不等于空字符串。简单地说,它将从myList
中删除所有空字符串
myList = [v for v in myList if v != '']
以下为分项数字:
# 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
纯粹是字符串列表:
# Empty strings evaluate to `False` in Python
myList = [x for x in myList if x]
如果myList
是一个字符串列表,并且您使用的是Python 2.x,那么可以使用更短的字符串:
myList = filter(None, myList)
简单地说,它从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('')
但是请注意,通过以下方法,您可以做得更好(效率更高):
或者,如果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中,两个单引号表示空字符串
保持循环的条件是
,而
列表中存在空字符串,并且只有在没有更多空字符串时才会终止
因此,它将从列表中删除所有空字符串 在Python中,两个单引号表示空字符串 保持循环的条件是,而列表中存在空字符串,并且只有在没有更多空字符串时才会终止
因此,它将从列表中删除所有空字符串 @Konos5-Pieters解释得很好,但是使用列表理解更有效,因为它只在列表中运行一次,而不是多次。@Konos5-Pieters解释得很好,但是使用列表理解更有效,因为它只在列表中运行一次,而不是多次。正如您所注意的,重写并不等同于原始代码——因为它创建了一个新列表,如果该列表是共享的,其他地方将继续看到包含所有空字符串的旧列表。要解决此问题,请使用切片分配:
myList[:]=(如果v!='',则v代表myList中的v)
。正如您所注意的,重写并不等同于原始代码-因为它创建了一个新列表,如果共享了该列表,则其他位置将继续看到包含所有空字符串的旧列表。若要解决此问题,请使用切片分配:myList[:]=(如果v!='',则v代表myList中的v)
。