序列之列表

列表

用于存储任意数目、任意类型的数据集合 。

列表是内置可变序列,是包含多个元素的有序连续的内存空间。列表定义的标准语法格式:

a = [10,20,30,40] 其中,10,20,30,40 这些称为:列表 a 的元素。

列表中的元素可以各不相同,可以是任意类型。比如: a = [10,20,'abc',True] 

列表的创建 

1.[]创建

 a = [1,50,'大象','string']

 a = [] #创建一个空的列表对象

2.list()创建 

 a = list() #创建一个空的列表对象

 a = list(range(10)). -->[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

 a = list("daxiang,sxt")  -->['d', 'a', 'x', 'i', 'a', 'n', 'g', ',', 's','x', 't'] 

range()创建整数列表

range()可以帮助我们非常方便的创建整数列表,这在开发中及其有用。语法格式为: range([start,] end [,step])

start 参数:可选,表示起始数字。默认是 0
end 参数:必选,表示结尾数字。
step 参数:可选,表示步长,默认为 1
python3 中 range()返回的是一个 range 对象,而不是列表。我们需要通过 list()方法将其 转换成列表对象。

列表的增加操作

1.append()方法:

  原地修改列表对象,是真正的列表尾部添加新的元素,速度最快,推荐使用。 

  a=[11,22,33]

  a.append(44)

  print(a)  -->[11,22,33,44]

2.extend()方法 :

  将目标列表的所有元素添加到本列表的尾部,属于原地操作,不创建新的列表对象。 

  a = [11,22,33]

  b = [44,55,66]

  a.extend(b)  -->[11,22,33,44,55,66]

3.insert()方法:

  使用 insert()方法可以将指定的元素插入到列表对象的任意制定位置。这样会让插入位置后 面所有的元素进行移动,会影响处理速度。涉及大量元素时,尽量避免使用。 

  a = [10,20,30]

  a.insert(2,100)  -->[10,20,100,30] 

4.乘法扩展

  b = ['da',100]*3   -->['da',100,'da',100,'da',100] 

列表的删除操作

1.del 删除 

 删除列表指定位置的元素。

 a = [100,200,888,300,400]
del a[1]   -->[100,888,300,400]
 
2.pop()方法 
 pop()删除并返回指定位置元素,如果未指定位置则默认操作列表最后一个元素。 
1 a = [100,200,300,333,444]
2 print(a.pop())
3 print(a)
4 print(a.pop(1))
5 print(a)

运行结果:

444
[100, 200, 300, 333]
200
[100, 300, 333]

3.remove()方法 

删除首次出现的指定元素,若不存在该元素抛出异常 

1 a = [100,200,300,333,200,444]
2 a.remove(200)
3 print(a)
4 a.remove(900)
5 print(a)

运行结果:

Traceback (most recent call last):
File "/Users/gray/PycharmProjects/test/test001.py", line 29, in <module>
a.remove(900)
ValueError: list.remove(x): x not in list
[100, 300, 333, 200, 444]

列表的修改

 a = [1,2,3,4,5]

 a[0] = 9 -->a = [9,2,3,4,5]

列表的查询


1.通过索引直接访问元素 

 我们可以通过索引直接访问元素。索引的区间在[0, 列表长度-1]这个范围。超过这个范围则 会抛出异常。

1 a = [100,200,300,333,200,444]
2 print(a[3])

运行结果:
333

2.index()获得指定元素在列表中首次出现的索引

 index()可以获取指定元素首次出现的索引位置。语法是:index(value,[start,[end]])。其中, start 和 end 指定了搜索的范围。

1 a = [100,200,300,333,200,444]
2 print(a.index(200))
3 print(a.index(200,2))  #从索引位置2开始往后搜索的第一个200
4 print(a.index(200,2,5))  #从索引位置 2 到 5 这个区间,第一次出现 200 元素的位置

运行结果:

1
4
4

3.count()获得指定元素在列表中出现的次数 

1 a = [100,200,300,333,200,444]
2 print(a.count(200))

运行结果:2

4.len()返回列表长度 

1 a = [100,200,300,333,200,444]
2 print(len(a))

运行结果:6

5.切片操作

我们在前面学习字符串时,学习过字符串的切片操作,对于列表的切片操作和字符串类似。 切片是 Python 序列及其重要的操作,适用于列表、元组、字符串等等。切片的格式如下:

 切片 slice 操作可以让我们快速提取子列表或修改。标准格式为: [起始偏移量 start:终止偏移量 end[:步长 step]] 

操作和说明

示例

结果

[:] 提取整个列表

[10,20,30][:]

[10,20,30]

[start:]从 start 索引开始到 结尾

[10,20,30][1:]

[20,30]

[:end]从头开始知道 end-1

[10,20,30][:2]

[10,20]

[start:end]从 start 到 end-1

[10,20,30,40][1:3]

[20,30]

[start:end:step] 从 start 提 取到 end-1,步长是 step

[10,20,30,40,50,60,70][1:6: 2]

[20, 40, 60]

6.列表的遍历

for obj in listObj: print(obj) 

 a = [100,200,300,333,200,444]
 for b in a:
     print(b)

运行结果:
100
200
300
333
200
444

7.列表的排序

sort() 默认是升序,加入reverse=True为降序

1 a=[1,2,3,11,21,10,5]
2 a.sort()
3 print(a)
4 a.sort(reverse=True)
5 print(a)

运行结果:

[1, 2, 3, 5, 10, 11, 21]
[21, 11, 10, 5, 3, 2, 1]

原文地址:https://www.cnblogs.com/elephant-study/p/11549313.html