请提供建议 - 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')]  

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...