如何在Python中的函数内的不同项目上循环列表?

时间:2018-09-01 16:42:11

标签: python python-3.x list function loops

我刚开始使用Python中的函数。我的目标是循环显示带有水果的列表,并为每个水果向后打印字母。当遇到特殊字符时,它将停止并继续前进到下一个水果。我尝试使用循环来执行此操作,并每次都将其添加到索引中,但这只会正确打印第一个水果。如果我只将每个水果的代码放五遍,那么效果很好。请帮助我修复索引。代码在下面。

def reverse(li):
    c = 1
    while c == 1:
        index = 0
        for c in reversed(li[index]):
            if c.isalpha():
                print(c, end="")
                index += 1
            else:
                print()
                index += 1
                break

fruits = ['ap!ple','bana@na','ma%ngo','#orange','pine*apple']
reverse(fruits)

2 个答案:

答案 0 :(得分:2)

您仅循环浏览列表的第一个元素(reversed(li[index]))。

def reverse(li):
    for word in li:
        for rev_word in reversed(word):
            if rev_word.isalpha():
                print(rev_word, end="")
            else:
                print()
                break

fruits = ['ap!ple','bana@na','ma%ngo','#orange','pine*apple']
reverse(fruits)

输出:

elp
an
ogn
egnaro
elppa

答案 1 :(得分:2)

您将index设置为0,因此仅使用第一个条目。另外,c在第一次迭代之后就永远不等于1,因此while循环仅运行一次。

最好创建一个新字符串,例如takewhile并在所有单词的for循环中打印出来:

from itertools import takewhile

def reverse(words):
    for word in words:
        print(''.join(takewhile(str.isalpha, reversed(word))))

fruits = ['ap!ple','bana@na','ma%ngo','#orange','pine*apple']
reverse(fruits)