微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

请提供建议 - Python 中的基本 For 循环效率

如何解决请提供建议 - Python 中的基本 For 循环效率

首先,我想澄清一下,我目前正在学习 Python。所以这可能是一个初学者级别的问题。提前感谢您的任何建议/回复

目前,我正在学习的课程是循环和迭代。我决定自己做一些工作,并提出自己的挑战以进行简单的练习。

我的个人挑战: 在变量中创建并存储一个字符串,然后使用枚举器,以相反的顺序输出字符串。

**我知道还有其他方法可以实现这一点,但是,我有目的地尝试了解枚举器可以提供多少灵活性。

我浏览了几种格式,我知道哪些格式最有效,但是,我能想出的最好的格式(根据我目前的知识)是这样的:

mystring1 = 'Zero'

for index,letter in enumerate(mystring1):
    if index == 0:
        index0 = index,letter
        print('First Index:',index0,'\n')
        index += 1
        if index == 1:
            index1 = index,letter
            print('Second Index:',index1,'\n')
            index += 1
            if index == 2:
                index2 = index,letter
                print('Third Index:',index2,'\n')
                index += 1
                if index == 3:
                    index3 = index,letter
                    print('Fourt Index:',index3,'\n')
                    index += 1
                else:
                    
                    continue
            else:
                
                continue
        else:
            
            continue
    else:
        print('All Letters Captured')
        break
    
    print(index3,index0)

使用上面的代码,这是我的输出,但是,有两个问题:我没有将字母抓取到相应的索引,而且我觉得我没有最有效地完成它。

First Index: (0,'Z') 

Second Index: (1,'Z') 

Third Index: (2,'Z') 

Fourt Index: (3,'Z') 

(3,'Z') (2,'Z') (1,'Z') (0,'Z')
All Letters Captured

我对 C# 有一些了解,我主要担心得到类似于数组的输出;我将拥有所有可能的组合。

任何提示或建议都会很棒。只是在努力学习!

再次感谢大家的时间!

解决方法

我认为第一个问题是您的代码没有按照您的意愿行事,而不是效率低下。因为您在每个 if 语句的末尾都有 index += 1,所以程序实际上会在第一个循环中分配所有索引(这就是与每个索引关联的字母是 Z 的原因。更清晰的方法可能看起来像

a = []                                                                                                                
for index,letter in enumerate(mystring1):                                                                                 
    a.insert(0,(index,letter)) 

a 是一个列表,每次我们调用 a.insert(0,...) 时,我们都会在该列表前面加上(有效地反转枚举器)。它输出

[(3,'o'),(2,'r'),(1,'e'),(0,'Z')]  

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。