如何将列表中的字符串与整数进行比较?

时间:2015-03-12 19:13:43

标签: python

我今天的任务是创建一个带有字符串列表和整数的函数。如果列表中的字符串大于整数值,则将其丢弃并从列表中删除。这就是我到目前为止所做的:

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在末尾打印。

万分感谢!

4 个答案:

答案 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