Python - 虽然所有列表元素都会导致 .isalpha 问题为真
Python - while all list elements result in true for .isalpha issue
一旦 element.isalpha()
变为 False
,我就使用以下代码 return 列表:
for element in initialList:
if element.isalpha() == True:
newList.append(element)
return newList
initialList
是预定义的列表,其中包含随机混合letters/numbers用于测试目的,当然newList
是return只要element.isalpha()
变成 False
但是,我必须使用 while
循环以及 break
语句来实现此目的。我怎么能这样做呢?
您确实需要 break
语句,但 while
语句在这里并没有太大帮助。考虑:
def f(initialList):
newList=[]
for element in initialList:
if not element.isalpha():
break
newList.append(element)
return newList
例如:
>>> f(['a', 'b', '!', 'c'])
['a', 'b']
备选方案(如果必须使用while
)
def g(initialList):
newList=[]
i = 0
while i < len(initialList):
if not initialList[i].isalpha():
break
newList.append(initialList[i])
i+=1
return newList
可以使用函数all
来实现,代码如下:
>>> li = ['a', 'b']
>>> all(e.isalpha() for e in li)
True
>>> li = ['a', 'b', '!']
>>> all(e.isalpha() for e in li)
False
不需要循环,只需使用 filter
——这正是它的用途。 f = lambda initial_list: filter(str.isalpha, initial_list)
一旦 element.isalpha()
变为 False
,我就使用以下代码 return 列表:
for element in initialList:
if element.isalpha() == True:
newList.append(element)
return newList
initialList
是预定义的列表,其中包含随机混合letters/numbers用于测试目的,当然newList
是return只要element.isalpha()
变成 False
但是,我必须使用 while
循环以及 break
语句来实现此目的。我怎么能这样做呢?
您确实需要 break
语句,但 while
语句在这里并没有太大帮助。考虑:
def f(initialList):
newList=[]
for element in initialList:
if not element.isalpha():
break
newList.append(element)
return newList
例如:
>>> f(['a', 'b', '!', 'c'])
['a', 'b']
备选方案(如果必须使用while
)
def g(initialList):
newList=[]
i = 0
while i < len(initialList):
if not initialList[i].isalpha():
break
newList.append(initialList[i])
i+=1
return newList
可以使用函数all
来实现,代码如下:
>>> li = ['a', 'b']
>>> all(e.isalpha() for e in li)
True
>>> li = ['a', 'b', '!']
>>> all(e.isalpha() for e in li)
False
不需要循环,只需使用 filter
——这正是它的用途。 f = lambda initial_list: filter(str.isalpha, initial_list)