列表——类似于数组
例:country = ["China", "USA", "England"], 如同数组一样,数组下标是从0开始的,而PYTHON中的列表也是如此,例:
>>> print(country)
['China', 'USA', 'England']
>>> print(country[0])
China
>>> print(country[1])
USA
>>> print(country[2])
England
>>>
len()可以得出列表中有多少个数据项,例:
>>> print(len(country))
3
>>>
使用append()方法可以在列表末尾增加一个数据项,pop()方法可以在列表末尾删除一个数据项,而extend()方法则可以在列表末尾增加一个数据项集合
>>> country.append("Japan")
>>> print(country)
['China', 'USA', 'England', 'Japan']
>>> country.pop()
'Japan'
>>> print(country)
['China', 'USA', 'England']
>>> country.extend(["France", "Australia"])
>>> print(country)
['China', 'USA', 'England', 'France', 'Australia']
>>>
在列表中找到一个指定的数据项,并删除,可使用remove()方法,而如果想在特定的位置增加一个数据项,可以使用insert()方法,例:
>>> country.remove("USA")
>>> print(country)
['China', 'England', 'France', 'Australia']
>>> country.insert(0, "Russia")
>>> print(country)
['Russia', 'China', 'England', 'France', 'Australia']
>>>
PYTHON列表中可以混合存放字符串和数字,实际上,不光是可以混合字符串和数字,只要你愿意,完全可以在列表中存储任意的数据
例:有如下列表:
movies = ["The Holy Grail", "The Life of Brian", "The Meaning of Life"]
若想把列表的数据变成以下模样,该怎么办呢?
["The Holy Grail", 1975, "The Life of Brian", 1979 "The Meaning of Life", 1983]
很明显,我们有两种方法,一是用之前说过的insert()方法, 一是重新创建一张列表
>>> movies.insert(1, 1975)
>>> movies.insert(3, 1979)
>>> movies.insert(5, 1983)
>>> print(movies)
['The Holy Grail', 1975, 'The Life of Brian', 1979, 'The Meaning of Life', 1983]
>>>
那么,如果我们想像C语言一样,用一个循环来输出列表的数据项(C语言中的数组的元素),那么该怎么办呢?
当然也是使用for循环,来看一下for循环的语法:
for 目标标识符 in 列表 :(千万别忘了这两点)
列表处理代码(必须缩进)
类比于C语言,迭代处理列表的时候,相应的会把列表中的各个数据值分别赋至目标标识符,也就是说,每次执行循环代码的时候,目标标识符都会指示一个不同的数据值。循环一直迭代,直至处理完列表中的所有数据(当然,while()语句也可以实现跟for()一样的功能)
例:>>> for each_item in movies:
... print(each_item)
...
The Holy Grail
1975
The Life of Brian
1979
The Meaning of Life
1983
>>>
使用while
>>> count = 0
>>> while (count < len(movies)) :
... print(movies[count])
... count = count + 1
...
The Holy Grail
1975
The Life of Brian
1979
The Meaning of Life
1983
>>>
注意:在Python中,单引号和双引号都可以用来创建字符串。
跟大多数编程语言一样,Python在创建名字时,必须以一个字母或者一个下划线开头,接下来就可以包括任何的字母字符,数字和/或者下划线,但是不允许出现奇怪的字符,如%$这些。另外,Python也是区分大小写的,也就是说name和NAME是两个不同的名字。
C语言中有数组的数组(多维数组),而Python中则有列表中的列表,譬如:
>>> movies = [
... "The Holy Grail", 1975, "Terry Jones & Terry Gilliam", 91,
... ["Graham Chapman",
... ["Michael Palin", "John Cleese", "Terry Gilliam", "Eric Idle", "Terry Jones"]]]
>>> print(movies)
['The Holy Grail', 1975, 'Terry Jones & Terry Gilliam', 91, ['Graham Chapman', ['Michael Palin', 'John Cleese', 'Terry Gilliam', 'Eric Idle', 'Terry Jones']]]
>>>
>>> print(movies[4][1][3])
Eric Idle
如果使用for循环的话,嵌套在列表中的下一层列表会被原样打印出,如:
>>> for each_item in movies:
... print(each_item)
...
The Holy Grail
1975
Terry Jones & Terry Gilliam
91
['Graham Chapman', ['Michael Palin', 'John Cleese', 'Terry Gilliam', 'Eric Idle', 'Terry Jones']]
那应该怎么解决呢?
这时我们就可以使用我们常用的if...else...语句了。
格式:
if 条件 :
"true"组
else:
"false"组
既然有了if...else...,那么我们怎样才能判断列表选项本身是不是一个列表呢?这个我们就得使用 insinstance()了,isinstance()支持两个参数
例:
>>> names = ["MO", "XUE"]
>>> isinstance(names, list)
True
>>> num_names = len(names)
>>> isinstance(num_names, list)
False
>>>
很显然,isinstance()返回True或False以供if...else..使用。
现在,我们来把刚才那个有着嵌套列表的列表显示出其数据项。
>>> for each_item in movies:
... if isinstance(each_item, list):
... for each_son in each_item:
... print(each_son)
... 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']
从上面我们可以看出,它已经帮我输出了一层嵌套,但是还是没有输出完全的出来。
很显然,我们可以不断地通过增加if..else..来达到输出很多层的列表,这点是毋庸置疑的。但是这样的话很明显非常麻烦,那有没有什么好点的方法呢?
想想,在C语言中,我们一般把实现某个功能的一大段代码写成一个函数来调用,这样的话,就可以使得编程结构更清晰,明了,那么,在Python中是否也可以这么做呢?
来看一下Python中的函数的标准形式:
def 函数名 (参数(可选)):(括号必不可少)
函数代码组(必须缩进)
好吧,下面我们来使用函数来把刚才的那个嵌套列表写出来:
>>> def print_list(the_list):
... for each_item in the_list :
... if isinstance(each_item, list):
... print_list(each_item)
... else:
... print(each_item)
...
>>> print_list(movies)
The Holy Grail
1975
Terry Jones & Terry Gilliam
91
Graham Chapman
Michael Palin
John Cleese
Terry Gilliam
Eric Idle
Terry Jones
>>>
简单多了把,这里将的东西都很简单,学习过C语言的人一下子就可以看懂了,我也是今天才开始学习的,,哈哈,,时间不早了,睡觉去~~~