我今天的任务是创建一个带有字符串列表和整数的函数。如果列表中的字符串大于整数值,则将其丢弃并从列表中删除。这就是我到目前为止所做的:
def main(L,n):
i=0
while i<(len(L)):
if L[i]>n:
L.pop(i)
else:
i=i+1
return L
#MAIN PROGRAM
L = ["bob", "dave", "buddy", "tujour"]
n = int (input("enter an integer value)
main(L,n)
所以我真正想做的就是让用户输入一个数字,然后将其与字符串值列表进行比较。例如,如果用户输入数字3,那么dave,buddy和tujour将从列表中删除,只留下bob在末尾打印。
万分感谢!
答案 0 :(得分:1)
看起来你在这里做得很多。只需返回一个使用适当条件的列表理解。
def main(L,n):
return([x for x in L if len(x) <= n])
答案 1 :(得分:0)
您应不从正在迭代的列表中删除元素,您需要copy
或使用reversed
:
L = ["bob", "dave", "buddy", "tujour"]
n = int(input("enter an integer value"))
for name in reversed(L):
# compare length of name vs n
if len(name) > n:
# remove name if length is > n
L.remove(ele)
print(L)
使用[:]
语法制作副本:
for name in l[:]:
# compare length of name vs n
if len(name) > n:
# remove name if length is > n
L.remove(ele)
print(L)
答案 2 :(得分:0)
只需使用内置过滤器方法,其中n
是截止长度:
newList = filter(lambda i:len(i) <= n, oldList)
答案 3 :(得分:0)
这是一个简单的解决方案,您可以在调用主函数后打印L.希望这会有所帮助。
def main(L,n):
l=len(L)
x=0
while x<l:
#if length is greater than n, remove the element and decrease the list size by 1
if len(L[x])>n:
L.remove(L[x])
l=l-1
#else move to the next element in the list
else:
x=x+1