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)