Python之列表

记得最开始学接触Python就被它那高效简洁的代码吸引了,就决定要学Python,那时候还没大学毕业,在网易云课堂看一些Python的视频,但是因为后来从事Android开发又加上工作比较忙,所以就没有继续系统学习和梳理了,之前学的也都忘差不多了,现在决定重新系统地再学习一遍,记得刚工作的时候买了一本Head First Python,一直放在抽屉了没怎么看,现在又派上用场了,坚持下去,就会成功

先给出一个列表的定义:

1
language = ["Python","Java","C/C++"]

列表定义:

如果你有其他高级语言的基础第一次接触Python的时候会很好奇,难道不需要为列表声明类型信息吗?答案是不用,Python的变量标识符没有类型,标识符只是名字,可以只是某个类型的数据对象,可以把Python的列表想象成是一个高层集合

关于列表在内存中存储:Python创建一个列表时,解释器会在内存中创建一个类似数组的数据结构来存储数据,数据堆自下而上堆放(形成一个堆栈)。和其他语言一样,默认第一项的编号也是从0开始。

可以通过print(language[0])在屏幕上打出列表第一项的值

Python列表的一些方法:

len()

获取列表长度

1
2
3
4
>>> len(language)
3
>>> print(len(language))
3

append()

在列表末尾增加一个数据项

1
2
3
>>> language.append("Swift")
>>> print(language)
['Python', 'Java', 'C/C++', 'Swift']

pop()

从列表末尾删除数据项

1
2
3
4
5
>>> language.pop()
'Swift'
>>> print(language)
['Python', 'Java', 'C/C++']
>>>

extend()

在列表末尾增加一个数据项集合

1
2
3
>>> language.extend(["Swift","Go"])
>>> print(language)
['Python', 'Java', 'C/C++', 'Swift', 'Go']

remove()

在列表中找到并删除一个特定的数据项:

1
2
3
>>> language.remove("Java")
>>> print(language)
['Python', 'C/C++', 'Swift', 'Go']

insert()

在某个特定位置前面插入一个数据项:

1
2
3
>>> language.insert(2,"Java")
>>> print(language)
['Python', 'C/C++', 'Java', 'Swift', 'Go']

列表中可以混入不同类型的数据以及列表中嵌套列表,给出一个嵌套列表的例子,然后输出列表中的每一项:

1
2
3
4
5
6
7
8
9
10
11
>>> movies = ["The Holy Grail",1975,"Terry Gilliam",91,["Graham Chapman",["Michael Palin","John Cleese","Terry Gilliam","Eric Idle","Terry Jones"]]]
>>> print(movies)
['The Holy Grail', 1975, 'Terry Gilliam', 91, ['Graham Chapman', ['Michael Palin', 'John Cleese', 'Terry Gilliam', 'Eric Idle', 'Terry Jones']]]
>>> for each_item in movies:
print(each_item)

The Holy Grail
1975
Terry Gilliam
91
['Graham Chapman', ['Michael Palin', 'John Cleese', 'Terry Gilliam', 'Eric Idle', 'Terry Jones']]

你会发现,其实只是把列表中的每一项整个打印出来了,但是因为列表的有些项本身还是一个列表,甚至列表中还有列表,那么我们需要改进程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
>>> for each_item in movies:
if isinstance(each_item,list):
for each_value in each_item:
if isinstance(each_value,list):
for nested_item in each_value:
print(nested_item)
else:
print(each_value)
else:
print(each_item)

The Holy Grail
1975
Terry Gilliam
91
Graham Chapman
Michael Palin
John Cleese
Terry Gilliam
Eric Idle
Terry Jones

这样打印出来的就没有列表了,但是你会发现重复代码很多,而且如果嵌套多层的话,代码要变的更臃肿,就不符合Python的简洁高效了,所以后面我们会来优化这段代码

注意几点

  • 如果需要在一个字符串中嵌入一个双引号需要使用转义符:\ 像这样:\” 或者用单引号引起这个字符串。
  • Python中,单引号和双引号都可以用来创建字符串,有一个规则是:如果字符串前面使用了某个引号(单引号或双引号),那么字符串后面也要用同样的引号:不能再字符串前后混合使用不同的引号。
  • 可以通过help(insert)来查看BIF函数insert()方法的解释和用法