一、列表

列表是 python 中的基础数据类型之一,它是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:

  1. li = ['alex', 123, True, (1, 2, 3, 'wusir'), [1, 2, 3, '小明', ], {'name': 'alex'}]

列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据。列表是有序的,有索引值,可切片,方便取值。

索引,切片,步长

  1. li = ['xiao',123,True,(1,2,3,'wusir'),[1,2,3,'小明',],{'name':'xiao'}]
  2. print(li[0])
  3. print(li[2])
  4. print(li[1:4])
  5. print(li[:5:2])
  6. #倒着取,后2个
  7. print(li[-1:-3:-1])

执行输出:
xiao
True
[123, True, (1, 2, 3, ‘wusir’)]
[‘xiao’, True, [1, 2, 3, ‘小明’]]
[{‘name’: ‘xiao’}, [1, 2, 3, ‘小明’]]

下面介绍列表的增、删、改、查

append() 追加,在最后一个位置添加元素

  1. li = [1,'a','b',2,3,'a','laonaihai']
  2. li.append('xiao')
  3. print(li)

执行输出:
[1, ‘a’, ‘b’, 2, 3, ‘a’, ‘laonaihai’, ‘xiao’]

insert() 按照索引添加

将元素插入到指定的索引值位置,后面的元素索引值会自动加 1

  1. li = [1,'a','b',2,3,'a','laonaihai']
  2. li.insert(2,'zhang')
  3. print(li)

仔细输出:
[1, ‘a’, ‘zhang’, ‘b’, 2, 3, ‘a’, ‘laonaihai’]

extend() 迭代着添加

在最后的位置,迭代每一个元素,依次添加。

  1. li = [1,'a','b',2,3,'a','laonaihai']
  2. li.extend('ABC')
  3. print(li)

执行输出:
[1, ‘a’, ‘b’, 2, 3, ‘a’, ‘laonaihai’, ‘A’, ‘B’, ‘C’]

使用输入框方式添加元素

  1. name_list = ['张无忌','张敏','胡歌','江疏影']
  2. while True:
  3. name = input('请输入新员工姓名:Q/q ').strip()
  4. if name.upper() == 'Q':break
  5. else:
  6. name_list.append(name)
  7. print('已成功添加新员工%s' % name)
  8. print(name_list)

执行输出:
列表切片,增删改查,常用操作方法 - 图1

pop() 按照索引删除

默认删除最后一个

  1. li = [1,'a','b',2,3,'a','laonaihai']
  2. li.pop()
  3. print(li)

执行输出:
[1, ‘a’, ‘b’, 2, 3, ‘a’]

删除索引值为 1 的元素

  1. li = [1,'a','b',2,3,'a','laonaihai']
  2. li.pop(1)
  3. print(li)

执行输出:
[1, ‘b’, 2, 3, ‘a’, ‘laonaihai’]

pop() 是增删改查,所有方法里面,唯一有返回值的方法。
返回删除的元素。
pop()只能删除一个元素

remove() 按照元素删除,只能删除一个

  1. li = [1,'a','b','a',2,3,'a','laonaihai']
  2. li.remove('a')
  3. print(li)

执行输出:
[1, ‘b’, ‘a’, 2, 3, ‘a’, ‘laonaihai’]

clear() 清空列表的所有元素

  1. li = [1,'a','b','a',2,3,'a','laonaihai']
  2. li.clear()
  3. print(li)

执行输出:
[]

del 删除列表

  1. li = [1,'a','b','a',2,3,'a','laonaihai']
  2. del li

切片删除

  1. li = [1,'a','b','a',2,3,'a','laonaihai']
  2. del li[:3]
  3. print(li)

执行输出:
[‘a’, 2, 3, ‘a’, ‘laonaihai’]

跳着删除

  1. li = [1,'a','b','a',2,3,'a','laonaihai']
  2. del li[:3:2]
  3. print(li)

执行输出:
[‘a’, ‘a’, 2, 3, ‘a’, ‘laonaihai’]

使用赋值修改

按照索引改,是一个整体修改
a 改成 A

  1. li = [1,'a','b','a',2,3,'a','laonaihai']
  2. li[1] = 'A'
  3. print(li)

执行输出:
[1, ‘A’, ‘b’, ‘a’, 2, 3, ‘a’, ‘laonaihai’]

切片修改

不是整体,而是迭代添加。

  1. li = [1,'a','b','a',2,3,'a','laonaihai']
  2. li[:3] = 'aq'
  3. print(li)

执行输出:
[‘a’, ‘q’, ‘a’, 2, 3, ‘a’, ‘laonaihai’]

切片,添加一个列表

  1. li = [1,'a','b','a',2,3,'a','laonaihai']
  2. li[:3] = [11,22,33,44]
  3. print(li)

执行输出:
[11, 22, 33, 44, ‘a’, 2, 3, ‘a’, ‘laonaihai’]

切片修改的执行过程是,先删除切片部分,再迭代添加的对象,依次添加元素。
比如上面的 11,22,33

索引,切片,步长,查看方法,和字符串操作是一样的,这里不再举例。

for 循环

  1. li = [1,'a','b','a',2,3,'a','laonaihai']
  2. for i in li:
  3. print(i)

执行输出:
1
a
b
a
2
3
a
laonaihai

其他操作方法:

  1. li = [1,2,7,8,5,6,3,4]
  2. li.sort()
  3. print(li)

执行输出:
[1, 2, 3, 4, 5, 6, 7, 8]

从大到小,反向排序

  1. li = [1,2,7,8,5,6,3,4]
  2. li.sort(reverse=True)
  3. print(li)

执行输出:
[8, 7, 6, 5, 4, 3, 2, 1]

其他常用方法

reverse() 翻转

翻转,就是将右边的元素和左边的元素进行对换。

  1. li = [1,2,7,8,5,6,3,4]
  2. li.reverse()
  3. print(li)

执行输出:
[4, 3, 6, 5, 8, 7, 2, 1]

任何排序都不如 sort 和 reverse 快。
如果没有明确要求指定排序方法,优先使用 sort 和 reverse

len() 查看数据长度

  1. li = [1,2,7,8,5,6,3,4]
  2. print(len(li))

执行输出:
8

count() 统计元素出现次数

  1. li = [1,2,7,8,5,6,3,4]
  2. print(li.count(7))

执行输出:
1

index() 通过元素找索引

  1. li = [1,'a','b','a',2,3,'a','laonaihai']
  2. print(li.index('a'))

执行输出:
1

列表的嵌套

  1. li = [1,2,'alex',['100','wusir',99],22]

1.将 alex 变成首字母大写的 Alex
2.将 wusir 变成全部大写的 wusir 放到原处
3.将 99 加 1 变成 100,返回原处

解题答案:

  1. li = [1,2,'alex',['100','wusir',99],22]
  2. #首字母大写
  3. li[2] = li[2].capitalize()
  4. #转换大写
  5. li[3][1] = li[3][1].upper()
  6. #数值加1
  7. li[3][2] += 1
  8. print(li)

执行输出:
[1, 2, ‘Alex’, [‘100’, ‘WUSIR’, 100], 22]