列表
一、说到列表,先说一下 数据结构,数据结构是以某种方式组合起来的数据元素集合。在Python中,最基本的数据结构为序列。
序列中的每个元素都有其编号,即其位置或索引,注意其中第,一个位置的索引为0,第二个索引为1,以此类推。
Python中内置了多中序列,其中常用的为列表、元组、字符串。接下来说列表:列表和元组、字符串的不同为——列表是可变的。
1、列表的表示为用方括号括起元素,并用逗号隔开。
2、函数list

num=[1,2,3,4,5]
print(num[0])
输出结果为 1

插入:1)切片
除了索引外,切片也可以方便的来访问特定范围内的元素,使用两个索引,并用冒号分开。

num=[1,2,3,4,5,6,7,8]
a=num[1:3]
print(a)
输出结果为 [2,3]

注:切片区间为前闭后开
若要从列表末尾开始数,则使用负数索引。

num = [1, 2, 3, 4, 5, 6, 7, 8]
a=num[-3:-1]
print(a)
输出结果为:[6,7]

如果切片结束于序列末尾,则可省略第二个索引。

num = [1, 2, 3, 4, 5, 6, 7, 8]
a=num[-1:]
print(a)
输出结果为:[8]

如果切片始于序列开头,则可省略第一个索引。

num = [1, 2, 3, 4, 5, 6, 7, 8]
a=num[:2]
print(a)
输出结果为:[1, 2]

也可省略两个索引复制整个列表。

num = [1, 2, 3, 4, 5, 6, 7, 8]
a=num[:]
print(a)
输出结果为:[1, 2, 3, 4, 5, 6, 7, 8]

2)切片步长
操作切片是还可以增加一个参数,设置步长,通常省略表示默认步长为1,但如果我们想要取列表中索引为奇数的元素
则可以设置步长为2。

num = [1, 2, 3, 4, 5, 6, 7, 8]
a=num[0:6:2]
print(a)
输出结果为:[1, 3, 5]

注意:步长不能为0,否则无法向前移动,但可以为负数,表示从右向左提取元素,步长为负数是,第一个索引一定要比第二个大。

num = [1, 2, 3, 4, 5, 6, 7, 8]
a=num[6:0:-2]
print(a)
输出结果为:[7, 5, 3]

二、列表的基本操作
1、修改列表:使用索引表示法给特定的元素赋值。

num = [1, 2, 3, 4, 5, 6, 7, 8]
num[2]=10
print(num)
输出结果为:[1, 2, 10, 4, 5, 6, 7, 8]

注意:不能给不存在的元素赋值,如列表的长度为3,就不可以给索引为5的元素赋值。
2、删除元素
此时可以运用del语句。

num = [1, 2, 3, 4, 5, 6, 7, 8]
del num[2]
print(num)
输出结果为:[1, 2, 4, 5, 6, 7, 8]

3、给切片赋值
切片可以同时给多个元素赋值,而且通过切片赋值可以将切片替换为长度与其不同的序列。

num =list ('12345678')
print(num)
输出结果为:['1', '2', '3', '4', '5', '6', '7', '8']

num=list('123456')
num[6:]=list('789')
print(num)
输出结果为:['1', '2', '3', '4', '5', '6', '7', '8', '9']

还可以插入新元素。

num = [1, 2, 3, 4, 5, 6, 7, 8]
num[2:2]=[10,11]
print(num)
输出结果为:[1, 2, 10, 11, 3, 4, 5, 6, 7, 8]

插入空序列,相当于删除。

num = [1, 2, 3, 4, 5, 6, 7, 8]
num[0:7]=[]
print(num)
输出结果为:[8]

三、列表的方法
方法是与对象(列表、数、字符串等)联系紧密的函数。
1、append:用于将一个对象添加到列表末尾。

num=[1,2,3,4,5,6]
num.append(4)
print(num)
输出结果为:[1, 2, 3, 4, 5, 6, 4]

2、clear:就地清空列表内容,类似于切片赋值语句num[:]。

num=[1,2,3,4,5,6]
num.clear()
print(num)
输出结果为:[]

3、copy:复制列表。
常规的复制只是将另一个名称关联到列表。

a=[1,2,3,4]
b=a
b[1]=10
print(a)
输出结果为:[1, 10, 3, 4]

要让a,b指向不同的列表,就必须将b关联到a的副本。

a=[1,2,3,4]
b=a.copy()
b[1]=10
print(a)
输出结果为:[1, 2, 3, 4]

4、count:计算指定元素在列表中出现了多少次。

num=[1,2,[1,2,3],2,5,8,2]
a=num.count(2)
print(a)
输出结果为:3

5、extend:同时将多个值附加到列表末尾。

a=[1,2,3,4]
b=[5,6,7]
a.extend(b)
print(a)
输出结果为:[1, 2, 3, 4, 5, 6, 7]

这和常规拼接类似,但常规拼接返回的是一个全新的序列,而extend在原来基础上扩展。

a=[1,2,3,4]
b=[5,6,7]
print(a+b)
print(a)
输出结果为:
[1, 2, 3, 4, 5, 6, 7]
[1, 2, 3, 4]

6、index:在列表中查找指定值第一次出现的位置。

num=[1,2,6,5,2,4,8,2]
a=num.index(2)
print(a)
输出结果为:1

7、insert:将一个对象插入列表指定位置。

num=[1,2,3,4,5,6]
num.insert(2,100)
print(num)
输出结果为:[1, 2, 100, 3, 4, 5, 6]

与extend一样,也可以用切片赋值获得与insert一样的效果。

num=[1,2,3,4,5,6]
num[2:2]=[100]
print(num)
输出结果为:[1, 2, 100, 3, 4, 5, 6]

8、pop:从列表删除一个元素,并返回这一元素。

num=[1,2,3,4,5,6]
a=num.pop(1)
print(a ,num)
输出结果为:2 [1, 3, 4, 5, 6]

pop是唯一一个既修改列表又返回一个非none值得方法。
9、remove:删除第一个为指定的元素。

num=[1,2,3,4,2,5]
num.remove(2)
print(num)
输出结果为:[1, 3, 4, 2, 5]

10、reverse:按相反的顺序排列列表中的元素。

num=[1,2,3,4]
num.reverse()
print(num)
输出结果为:[4, 3, 2, 1]

11、sort:对列表进行就地排序,就地排序意思是对原来的列表进行修改,使其元素按顺序排列,而不是返回排列后的列表的副本。

num=[1,5,2,3,4]
num.sort()
print(num)
输出结果为:[1, 2, 3, 4, 5]

12、高级排序:方法sort接受两个可选参数:key和reverse。这两个参数通常是按名称指定的称为关键字参数
参数key类似于参数cmp:将其设置为一个用于排序的函数。然而不会直接的使用这个函数来判断一个元素是否比另
一个元素小,而是使用它来为每一个元素创建一个键,再根据这些键对元素进行排序。
如要根据长度对元素进行排序可将参数key设置为函数len。

num=['1','1234','12','12345','123']
num.sort(key=len)
print(num)

输出结果为:['1', '12', '123', '1234', '12345']
另一个关键字参数reverse,只需将其指定为一个真值,来指出对列表进行正排序还是反排序。

num=[1,5,2,4,3]
num.sort(reverse=True)
print(num)
输出结果为:[5, 4, 3, 2, 1]

num=[1,5,2,4,3]
num.sort(reverse=False)
print(num)
输出结果为:[1, 2, 3, 4, 5]