一个函数后在python中打印列表

时间:2013-10-01 03:02:04

标签: python string list printing

我一直在尝试打印恰好位于列表中的函数的结果。如果这没有意义。

print_long.py中,定义一个Python函数print_long(list),它接受​​一个名为list的字符串列表,并打印出列表中长度大于或等于6的每个字符串。

这是原始问题。我试着做了

def print_long(list):  
    for i in print_long(list):  
        if len(list) > 6:  
            print (i)  
        else:  
            return None

但这显然是错误的,因为它无限循环它。或者它似乎似乎这样做。 帮助

6 个答案:

答案 0 :(得分:3)

您的代码似乎是一个没有基本(终止)条件的递归调用。也就是说,当您第一次拨打print_long()时,您会立即拨打print_long(),无限地拨打print_long()

您可能尝试的代码类似于:

def greater_than(mylist, n):
    for item in mylist:
        if len(item) > n:
            print item

mylist = ["hello", "foo", "bar", "testing", "world"]
greater_than(mylist, 4) # Prints: hello, testing, world

或者更简单:

mylist = ["hello", . . ., "world"] # Same as above
n = 4
[x for x in mylist if len(x) > n] # ['hello', 'testing', 'world']

答案 1 :(得分:2)

我认为这就是你要做的事情:

def print_long(in_list):   # define your function
    for i in in_list:      # loop over the input list
        if len(i) > 6:     # test the length of the elements
            print (i)      # if true print it out
        else:              # you don't need this else, as you really just want
            pass           # to do nothing if len(i) < 6

答案 2 :(得分:1)

将参数命名为list以外的参数。 Jonathon Reinhart提出了一个很好的建议:mylist。 上面的其他代码示例也为更好地编写for循环提供了很好的建议:

for i in mylist:

您可能还需要将len()更改为=&gt; 6.

if len(i) >= 6

根据你所写的内容,它看起来“打印出长度大于或等于6的列表中的每个字符串。”因此,您需要等于确保捕获长度等于6

答案 3 :(得分:1)

简短的一句:

def print_greater_or_equal_than(mylist, n):
  print '\n'.join(filter(lambda i: len(i) >= n, mylist))

答案 4 :(得分:1)

首先,您正在对函数进行递归调用,而不会减少列表输入。因此,它将继续对无穷大进行递归调用。

要避免无限叠加的递归,请在列表中打印该项目。在递归之前删除它:

def print_long(list): 
    i = list.pop(0)
    if len(list) > 6:  
        print (i)  
    else:  
        return None
    if len(list):
        print_long(list)

答案 5 :(得分:0)

首先,list是Python中的保留关键字,因此不要将其用作参数或变量名。我通常使用lst。无论如何,还有一些其他问题需要解决。

def print_long(lst):
    for i in lst:
        if len(i) >= 6:
            print i

print_long(['foo','bar','hello','johnny'])

之前,你试图迭代你的功能:

for i in print_long(lst)

这是不正确的,您只想遍历列表,如上面的第一个示例所示。实现您正在寻找的结果的更加pythonic方式是:

print ' '.join([i for i in lst if len(i) >= 6])

如果您不理解,请查看Python list comprehension