测试lis中元素的长度

2024-06-26 09:41:36 发布

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

def lengthgood(x):
    for i in x:
        if len(i)<13
            return i
        else:
            pass


def makeproperlist(x):
    return x.split(',')



attendancelist=makeproperlist(input("attendee list:"))
final_list=list(filter(lengthgood,attendancelist))
for i in finallist:
    print (i)

我想写一个程序,其中我创建了一个列表,其中只有小于14的元素可以是其中的一部分。你知道吗

这是我的代码,但它会不断返回我输入的所有元素,即使其中一些元素的长度超过14?你知道吗

我试着打印len(i),它说列表中的每个元素都是1?你知道吗

我该怎么解决这个问题?你知道吗


Tags: in元素列表forlenreturnifdef
3条回答

不应该将return放在循环中;它只返回与条件匹配的第一个元素。你知道吗

您也不应该在filter函数中循环,因为实际上是在字符串的字符上循环,这些字符串的长度都是1。你知道吗

因此,第一个字符总是返回真实值,在过滤后返回初始输入


您只需要检查输入长度,理想情况下,filter函数应该返回适当的布尔条件,而不是truthy值(在您的例子中return i返回的是非空字符串)

def lengthgood(x):
    return len(x)<13

如果不需要使用filter(),可以编写一个列表

final_list=[a if len(a) < 13 for a in attendancelist] 

可能是这样

flst = []

def croper(lst):
    for i in lst:
        flst.append(i) if len(i) < 13 else 0 


lst = input("attendee list:").split(',')
croper(lst)

print(flst)

或更短

def croper(lst):
    return [i for i in lst if len(i) < 13] 

lst = input("attendee list:").split(',')

print(croper(lst))

你想创建一个列表,但你不能在程序中的任何地方定义它,只需要一个函数makeproperlist(x)
试试这个代码,兄弟,这会帮你的。你知道吗

attendancelist=[]
while (True):
   ch=input("Enter c for continue and e for exit : ")
   if (ch=='c'):
       def makeproperlist(x):
           if x<=13:
               attendancelist.append(x)
           else:
               print("Enter number which is <= to 13.")
       makeproperlist(int(input("attendee list:")))
    elif (ch=='e'):
        break;
print("Your attendece list : ",attendancelist)

相关问题 更多 >