您的位置:首页 > 编程语言 > Python开发

(四)处理列表数据

2015-09-03 17:38 423 查看
楼主想,如果要输出不太满意的托福小项成绩,而且不用对每一个数据项进行设立(实在是太繁琐),应该如何迭代处理列表呢?

例:

>>> dcon_TOEFL=['Listening','Speaking']

>>> for each_flick in dcon_TOEFL:

print(each_flick)

                

        

Listening

Speaking

注:print行之后需要多一个回车,才可运行

所以,通过for循环就可以做到迭代要求

 

一、for循环

for  目标标识符 in 列表:

列表处理代码(也叫组suite)

目标标识符(target identifier)在迭代处理列表时,相应的会把列表中的各个数据值分别赋至目标标识符。所以,每次执行循环代码时,目标标识符都会指示一个不同的数据值,循环会一直迭代,直到处理完列表的所有数据。

二、while循环

例:for循环

     >>>for each_item in TOEFL:

         print(each_item)

     >>>count=0

    While循环

     >>>while count<len(TOEFL):

            print(TOEFL[count])

            count=count+1

输出结果:

     Reading

     28

     Listening

     19

     Speaking

     19

     Writing

     26

注意:1、除非需要while循环提供额外控制,否则能用for就不同while;

     2、python中,单引号和双引号都可以用来创建字符串,如果字符串前面使用了某个引号,那么字符串后面也要用同样的引号;

     3、如果要在一个字符串中嵌入一个双引号,可以对双引号转义:\”,或者用单引号引起字符串

例:楼主用的单引号来试的

     >>>passages=['I love you TOEFL and the passages\' words are to show my love toyou']

     >>>print(passages)

      ["I love you TOEFL and the passages'words are to show my love to you"]

4、标识符的名字可以以一个字母字符或一个下划线开头,接下来可以包括任意个字母字符、数字和/或下划线,不允许有奇怪的字符(如$);

 5、python代码区分大小写(之前提到过)。

 

三、在列表中存储列表

Python中,每个列表都是一个列表项集合,各列表项相互之间用逗号隔开,另外列表需要中括号括起。(托福的例子用完了,下面启用GRE)

例:

     >>>GRE=['Verbal',20,['TC',6,'RC',8,'SE',6],'Math',20,['MC',10,'QC',7,'DI',3]];

     >>>print(GRE[2][2])

     RC

此处GRE是嵌套了一个列表的列表

 

例:

楼主想要再复杂一点,为了节省时间,决定用head first python书上的例子

     >>>movies=['The Holy Grail',1975,'Terry Jones & Terry Gilliam',91,

            ['Graham Chapman',['Michael Palin','JohnCleese',

                                  'Terry Gilliam','Eric Idle','Terry Jones']]]    *********python自动缩进

     >>>print(movies)

      ['The Holy Grail', 1975, 'Terry Jones &Terry Gilliam', 91, ['Graham Chapman', ['Michael

     Palin','John Cleese', 'Terry Gilliam', 'Eric Idle', 'Terry Jones']]]

     >>>for each_item in movies:

              print(each_item)

 

        

     TheHoly Grail

     1975

     TerryJones & Terry Gilliam

     91                        *********for循环只打印外列表的各个数据项

*********嵌套在内列表中的下一层内列表会原样输出

      ['Graham Chapman', ['Michael Palin', 'JohnCleese', 'Terry Gilliam', 'Eric Idle', 'Terry Jones']]

 

那么有没有方法可以处理内列表,从而输出所有内容呢?

 

 

四、在列表中查找列表

解决上一个问题的想法:每次处理列表中一项时,都要查看这一项本身是不是另一个列表。如果这一项确实是一个列表,那么在处理外列表中的下一像之前,先要处理这个列表。用if…else语句:

if 某个条件满足:

“true”组

else:

“false”组

用来确定当前处理的列表项本身是不是一个列表,python内只有一个BIF(build-in function)可以在这方面提供帮助——isinstance()

例:

     >>>names=['Michael','Terry']

     >>>isinstance(names,list)

     True

     >>>num_names=len(names)

     >>>isinstance(num_names,list)

     False

所以解决上面的问题

>>> for each_item in movies:

         ifisinstance(each_item,list):

                   fornested_item in each_item:

                            print(nested_item)

         else:

                   print(each_item)

 

                  

The Holy Grail

1975

Terry Jones & Terry Gilliam

91

Graham Chapman

['Michael Palin', 'John Cleese', 'TerryGilliam', 'Eric Idle', 'Terry Jones']

但是还有一个被套列表没有得到正确处理

 

注意:1、python中有70多个BIF,输入dir(_builtins_)可以看到python提供的内置方法列表

五、处理多层嵌套列表

例:

处理上面问题最笨的办法:

>>> for each_item in movies:

         ifisinstance(each_item,list):

                   fornested_item in each_item:

                            ifisinstance(nested_item,list):

                                     fordeeper_item in nested_item:

                                               print(deeper_item)

                            else:

                                     print(nested_item)

         else:

                   print(each_item)

 

                  

The Holy Grail

1975

Terry Jones & Terry Gilliam

91

Graham Chapman

Michael Palin

John Cleese

Terry Gilliam

Eric Idle

Terry Jones

 

如何解决重复代码问题?创建函数,请看下一篇
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python