Python - 虽然所有列表元素都会导致.isalpha问题

时间:2015-04-02 01:32:21

标签: python list loops while-loop elements

element.isalpha()成为False时,我已使用以下代码返回列表:

  for element in initialList:
    if element.isalpha() == True:
      newList.append(element)
  return newList

initialList是一个预定义列表,其中包含用于测试目的的随机混合字母/数字,当然newList会在element.isalpha()变为False后立即返回

但是,我必须使用while循环以及break语句来实现此目的。我怎么能这样做?

3 个答案:

答案 0 :(得分:3)

您确实需要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

答案 1 :(得分:0)

您可以使用函数all来执行此操作,代码如下:

>>> li = ['a', 'b']
>>> all(e.isalpha() for e in li)
True
>>> li = ['a', 'b', '!']
>>> all(e.isalpha() for e in li)
False

答案 2 :(得分:0)

不需要循环,只需使用filter - 这正是它的用途。 f = lambda initial_list: filter(str.isalpha, initial_list)