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

如何在Python中循环函数中不同项的列表?,python,python-3.x,list,function,loops,Python,Python 3.x,List,Function,Loops,我刚刚开始学习Python中的函数。我的目标是循环一个水果列表,并为每个水果向后打印字母。当它击中一个特殊的角色时,它会停下来,然后移动到下一个水果。我试着用一个循环,每次都添加到索引中,但它只能正确地打印第一个水果。如果我只是把每个水果的代码放五次,它就完美地工作了。请帮我修改索引。代码如下 def reverse(li): c = 1 while c == 1: index = 0 for c in reversed(li[index]):

我刚刚开始学习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)

您只在列表的第一个元素中循环(
reversed(li[index])

输出:

elp
an
ogn
egnaro
elppa

您只在列表的第一个元素中循环(
reversed(li[index])

输出:

elp
an
ogn
egnaro
elppa

您将
索引设置为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)

您将
索引设置为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)

好。我还建议重命名变量:
li
的更好名称是
words
ii
的更好名称是
word
。那么单词中的单词就更容易阅读和理解了。我还建议重命名变量:
li
的更好名称是
words
ii
的更好名称是
word
。那么单词中的单词就更容易阅读和理解了。你是想把单词的第一部分颠倒过来还是第二部分颠倒过来?也就是说,如果你有
'ap!ple'
您是否期望
'pa'
'elp'
?使用for循环在列表中的字符串上循环。不需要使用索引进行一段时间的循环。您是要反转单词的第一部分还是第二部分?也就是说,如果你有
'ap!ple'
您是否期望
'pa'
'elp'
?使用for循环在列表中的字符串上循环。无需使用索引进行while循环