Python中的If、elif、else不遵循我的规则

Python中的If、elif、else不遵循我的规则,python,Python,基本上我有一个简单的IF/ELIF/ELIF/ELSE语句: for i in xrange(0, len(df)): if df.col_one[i] == 'Three': print df.col_one[i] print df.col_text[i] elif df.col_one[i] == 'Two': print df.col_one[i] print df.col_text[i] elif d

基本上我有一个简单的IF/ELIF/ELIF/ELSE语句:

for i in xrange(0, len(df)):
    if df.col_one[i] == 'Three':
        print df.col_one[i]
        print df.col_text[i]
    elif df.col_one[i] == 'Two':
        print df.col_one[i]
        print df.col_text[i]
    elif df.col_one[i] == 'One':
        print df.col_one[i]
        print df.col_text[i]
    else:
        pass
数据只是我从Excel中读取的一个简单数据框:

col_one  col_text
One      Text1
Two      Text2
Three    Text3

但是,当我运行下面的if/elif/elif/else命令时,它会先打印“One”、“Text1”,然后打印“Two”、“Text2”,最后打印“Three”、“Text3”。但我告诉Python打印的内容正好相反。这怎么可能

您不明白您要Python做什么。if/elif/else命令并不是说您将按该顺序打印它。它只是一个控制结构,只打印您拥有的项目。for循环是它以您不期望的顺序打印的原因。如果要打印3、2、1。然后,您需要反转数组的顺序或反转for循环索引的顺序,使其从2向后计数。

if/elif子句的顺序在这里并不重要。。。您正在以“一”、“二”、“三”的顺序循环数据。为什么每个if语句都做相同的事情?我的建议是:拿一支笔和一张纸,自己进行迭代。对于从0到2的每一个i值,执行您的代码块,按照您自己的说明进行操作,您将看到Python正是按照您的指示执行的。@1我想它是用于测试的。if/elif块的内容与问题没有真正的相关性。@glibdud注意点。只是觉得有点多余PIt不是要逆转它。它是关于按我想要的顺序打印的,因为我有三个以上的变量。谢谢你的解释!但是我需要使用什么,这样我就可以根据一个值选择我想要的行,而不必无休止地编写新的for和if语句?如果你想选择行,并且知道行数不会改变,你可以单独访问数组的索引。