day3_列表

时间:2022-09-08 10:19:26

一、列表

列表也通常被称为list 数组 array

1、列表定义

使用方括号([])即可

alist = [123,'abc','def',666,True]

空列表的定义:alist = [] 或 alist = list()

列表它的位置,或索引,第一个索引是0,第二个索引是1,依此类推

2、列表函数

1)len()方法:返回列表中元素个数

实例:

>>> alist = ['a','b','c','d']

>>> len(alist)

4

2)max()方法:返回列表元素的最大值

实例:

>>> alist = ['a','b','c','d']

>>> max(alist)

'd'

3)min()方法:返回列表元素中的最小值。

实例:

>>> alist = ['a','b','c','d']

>>> min(alist)

'a'

4)list()方法:用于将元组转换为列表。

实例:

>>> aTuple = (1,'sa',56,'ccc')

>>> list(aTuple)

[1, 'sa', 56, 'ccc']

3、列表切片

Python中符合序列的有序序列都支持切片(slice),例如列表,字符串,元组。

格式:【start:end:step】

start:起始位置

end:结束位置

step:间距

举例:

l = ['a','b','c','d','e','f','g','h','i','j']
print(l[0:4])             #切片取值,不包含最后一个下标元素(顾头不顾尾)
print(l[:5])              #最前面开始取,可以省略,代表从0开始取
print(l[4:])              #如果冒号后面不写,代表取到最后
print(l[:8:2])            #步长,也就是代表隔几个取一次

 l[::-1]可以反转列表,就是个固定用法,理解不了就背下来

l=['python', 'Love', 'Im']
print(l[::-1]) #反向输出

4、列表的增删改查与排序

1)增(append,insert,extend)

A、append() 方法:用于在列表末尾追加新的对象,只能添加一个元素。

实例:

>>> alist = [123,'abc','def',666]

>>> alist.append('ccc')

>>> print('更新后的列表:',alist)

更新后的列表: [123, 'abc', 'def', 666, 'ccc']

B、insert() 方法:将指定对象插入到列表中的指定位置,只能插入一个元素。

实例:

>>> alist.insert(0,'start')

>>> print(alist)

['start', 123, 'abc', 'def', 666, 'ccc']

C、extend() 方法:通过在列表末尾追加可迭代对象中的元素来扩展列表。

实例:

list1 = [1,2,3,4,5]
list2 = ['a','b','c']
list1.extend(list2)
print('扩展后的list1:',list1)

输出:

扩展后的list1 [1, 2, 3, 4, 5, 'a', 'b', 'c']

2)删

A、列表中pop()方法:通过指定元素的索引值来移除列表中的某个元素(默认是最后一个元素),并且返回该元素的值,如果列表为空或者索引值超出范围会报一个异常。

实例:

>>> alist = ['start', 123, 'abc', 'def', 666, 'ccc']

...

>>> alist.pop()                            #不填索引值,默认删除后最后一个元素

'ccc'                                                        #返回值

>>> print('默认删除后最后一个元素:',alist)

默认删除后最后一个元素: ['start', 123, 'abc', 'def', 666]

>>> alist.pop(2)

'abc'

>>> print('删除后指定元素后的列表:',alist)

删除后指定元素后的列表: ['start', 123, 'def', 666]

B 、列表 remove() 方法:通过指定元素的值来移除列表中某个元素的第一个匹配项,如果这个元素不在列表中会报一个异常。

实例:

>>> alist = ['start', 123, 'abc', 'def', 666, 'ccc']

>>> alist.remove('abc')

>>> print(alist)

['start', 123, 'def', 666, 'ccc']                        #删除了元素‘abc’

注意:remove()只删除一个指定的值。如果要删除的值可能在列表中出现多次,就需要使用循环来判断是否删除了所有的值。

C、del语句  :删除指定位置的元素

实例:

>>> alist = ['start', 123, 'abc', 'def', 666, 'ccc']

>>> del alist[0]                                      #删除第一个元素

>>> print(alist)

[123, 'abc', 'def', 666, 'ccc']

D、clear: 清空列表中的内容

>>> print(alist)

['start', '大山', 'abc', 'def', 666, 'ccc']

>>> alist.clear()

>>> alist

[]

3)改

修改元素的时候,通过下标来确定要修改的是哪个元素,然后进行修改

实例:

>>> alist = ['start', 123, 'abc', 'def', 666, 'ccc']

>>> alist[1] = '大山'

>>> print(alist)

['start', '大山', 'abc', 'def', 666, 'ccc']

4)查(in,not in,count,index)

A、查找列表中的某个元素

实例:

>>> alist = ['start', 123, 'abc', 'def', 666, 'ccc']

>>> print(alist[0])                              #获取第一个元素

start

>>> print(alist[-1])                             #获取最后一个元素

ccc

B、in 操作符:判断值是否在列表中,并返回true或false

实例:

>>> alist = ['start', 123, 'abc', 'def', 666, 'ccc']

>>> 'start' in alist

True

C、not in 操作符:判断是否不在列表,并返回True或False

实例:

>>> alist = ['start', 123, 'abc', 'def', 666, 'ccc']

>>> 122343 not in alist

True

D、count方法:统计指定值在列表中出现的次数,返回指定值在列表这个能出现的次数

实例:

>>> alist = ['start', 123, 'abc', 'def', 666, 'ccc',123]

>>> alist.count(123)

2

E、index方法:用于从列表中找出某个对象第一个匹配项的索引位置,如果这个对象不在列表中会报一个异常。

语法:L.index(obj[,start=0[,stop=len(L)]])

参数:

obj -- 查找的对象。

start -- 可选参数,开始索引,默认为0。(可单独指定)

stop -- 可选参数,结束索引,默认为列表的长度。(不能单独指定)

实例1:

>>> alist = ['start', 123, 'abc', 'def', 666, 'ccc',123]

>>> alist.index('abc')

2

实例2:

>>> alist = ['start', 123, 'abc', 'def', 666, 'ccc',123]

>>> alist.index(123,5)                   #从索引5开始查找对象123,找到的索引值为6

6

实例3:

>>> alist2 = [4,6,72,1,2,4,7,3]

>>> alist2.index(4,5,len(alist2))            #最后一个参数就是列表长度,不能改

5

>>> alist2.index(4,5,)

5

>>> alist2.index(4,5,7)

5

5)列表排序(sort,reverse)

A、sort() 方法:对列表进行排序,排序的元素类型需要一致

sort() 方法语法:

list.sort(cmp=None,key=None,reverse=False)

参数:

  • cmp -- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。
  • key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
  • reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。

以下实例,默认sort排序为升序:

实例1:

>>> alist = ['beijing','tianjin','xiamen','shanghai','hunan']

>>> alist.sort()

>>> print(alist)

['beijing', 'hunan', 'shanghai', 'tianjin', 'xiamen']

实例2:

>>> alist2 = [4,6,72,1,2,4,7,3]

>>> alist2.sort()

>>> print(alist2)

[1, 2, 3, 4, 4, 6, 7, 72]

以下实例,降序输出列表:

>>> alist2 = [4,6,72,1,2,4,7,3]

>>> alist2.sort(reverse=True)

>>> print(alist2)

[72, 7, 6, 4, 4, 3, 2, 1]

关于cmp、key参数以后再补充。

sorted(iterable[, cmp[, key[, reverse]]])

iterable.sort(cmp[, key[, reverse]])

参数解释:

(1)iterable指定要排序的list或者iterable,不用多说;

(2)cmp为函数,指定排序时进行比较的函数,可以指定一个函数或者lambda函数,如:

students为类对象的list,没个成员有三个域,用sorted进行比较时可以自己定cmp函数,例如这里要通过比较第三个数据成员来排序,代码可以这样写:

1
2
students = [('john''A'15), ('jane''B'12), ('dave''B'10)]
sorted(students, key=lambda student : student[2])

(3)key为函数,指定取待排序元素的哪一项进行排序,函数用上面的例子来说明,代码如下:

1
sorted(students, key=lambda student : student[2])

key指定的lambda函数功能是去元素student的第三个域(即:student[2]),因此sorted排序时,会以students所有元素的第三个域来进行排序。

B、reverse()方法:对列表中的元素进行反向排序。

实例:

>>> alist2 = [4,6,72,1,2,4,7,3]

>>> alist2.reverse()

>>> print(alist2)

[3, 7, 4, 2, 1, 72, 6, 4]

5、列表的嵌套

套几层就是几维
nums1 = [1,2,3] #一维数组
nums2 = [1,2,3,[4,56]]#二维数组
nums = [1,2,3,4,['a','b','c','d','e',['一','二','三']],['四','五']]   #三维数组

print(nums[4][5][1])  #取二
print(nums[5][1])   #取五
print(nums[-1][-1])   #取五

6、列表的循环遍历

1)for循环遍历

A、输出每个元素:

实例:

alist = ['abc',23,'中国','ccc','ddd',89]
for i in alist:
    print(i)

输出:

abc

23

中国

ccc

ddd

89

B、enumerate() 函数

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

语法:

enumerate(sequence,[start=0])

参数:

  • sequence -- 一个序列、迭代器或其他支持迭代对象。
  • start -- 下标起始位置。

实例1

passwords = ['a','b','c','d']
a = list(enumerate(passwords,start=1))      #小标从1开始
print(a)

输出:

[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]

实例2

在for循环中的应用实例:

想输出索引以及对应的元素。

普通for循环:

passwords = ['a','b','c','d']
i = 0
for j in passwords:
    print (i,j)
    i += 1

输出:

0 a

1 b

2 c

3 d

For循环使用enumerate()

passwords = ['a','b','c','d']
for i,j in enumerate(passwords):
    print(i,j)

输出:

0 a

1 b

2 c

3 d

2)while循环遍历

passwords = ['a','b','c','d']
count = 0
while count < len(passwords):
    print(passwords[count])
    count += 1

输出:

a

b

c

d

7、range()

Range()函数可创建一个整数列表,一般用在 for 循环中。

语法:

range(start,stop[,step])

参数说明:

  • start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
  • stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
  • step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

实例1:创建一个列表,里面的元素为1-10整数

l = list(range(1,11))
print(l)

输出:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

实例2:同上效果

alist = [i for i in range(1,11)]
print(alist)

输出:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

实例3:创建一个列表,里面元素是1-10中的偶数

alist = [i for i in range(1,10)]
print(alist[1::2])

实例3:创建一个列表,里面元素是1-10中的奇数

alist = [i for i in range(1,10)]
print(alist[::2])