- list
list是一个有序的集合,序号从0起编,一个list中可以包含多种类型的数据
list转换列表
字符串,元组,列表 > 都可以转换成列表,转换成列表都是可以被for循环的
基本操作:索引 切片 追加 删除 长度 循环 包含
列表的类库功能
List.append(x) |
添加一个元素到列表末尾,相当a[len(a):]=[x] |
List.extend(L) |
参数L是一个列表,通过添加给定列表的元素,相当a[len(a):]=L |
List.insert(i,x) |
在指定位置插入一个元素,第一个参数是位置,第二个是元素,a.insert(0,x)表示在列表的前面插入x |
List.remove(x) |
移除第一个值为x的元素,如果没有该元素,则报错 |
List.pop([x]) |
移除给定位置的元素,并且返回它,如果没有那个位置,则移除和返回list最后一个元素(中括号括起来的参数表明这个是可选项) |
List.clear() |
移除列表中的所有元素 |
List.index(x) |
返回list中值为x的位置,如果没有该值则报错 |
List.count(x) |
返回列表中x的个数 |
List.sort(key=None,reverse=False) |
对列表中的元素进行排序 |
List.reverse() |
反转列表中的元素 |
List.copy() |
进行列表的浅复制 |
以上函数运行如图:
#!/usr/bin/env python # -*- coding:utf-8 -*- mylist=[110,6.5,True,"hello"] mylist.append(False) print(mylist) #[110, 6.5, True, 'hello', False] 添加元素False mylist.insert(5,2.5) print(mylist) #[110, 6.5, True, 'hello', False, 2.5] 在索引为5的地方添加元素2.5 mylist.pop() print(mylist) #[110, 6.5, True, 'hello', False] 删除最后元素 2.5 mylist.pop(2) print(mylist) #[110, 6.5, 'hello', False] 删除索引为2的元素 True mylist.sort() print(mylist) #[False, 6.5, 110, 'hello'] 重新排列列表 mylist.reverse() print(mylist) #['hello', 110, 6.5, False] 反转列表中的元素 mylist.count(True) #返回0 print(mylist) #['hello', 110, 6.5, False] mylist.index(False) #返回元素False的索引 3 print(mylist) #['hello', 110, 6.5, False] mylist.remove("hello") print(mylist) #[110, 6.5, False] #移除元素hello
切片
如:
#!/usr/bin/env python # -*- coding:utf-8 -*- #切片 a=["zou","lu","chen"] print(a[0:2]) #输出 zou lu 这样就切片出了,第零一个和第二个下标的元素
统计列表里有多少个元素
如:
#!/usr/bin/env python # -*- coding:utf-8 -*- #切片 a=["zou","lu","chen"] print(len(a)) #输出 3 统计列表里有多少个元素
循环列表
while循环
#!/usr/bin/env python # -*- coding:utf-8 -*- #while循环 a = ["zou","lu","chen"] b = 0 while b < len(a): #len(统计列表里的元素) print(a[b]) b += 1 #循环出列表里的所有元素 zou lu chen
for循环
for循环每次循环到的数据就是列表的一个元素
#!/usr/bin/env python # -*- coding:utf-8 -*- #for循环 a = ["zou","lu","chen"] for b in a: #b为自定义循环变量 print(b) #循环出列表里的所有元素
extend(self, iterable)
(扩展列表) 要扩展的可迭代变量:可迭代是只要是能通过for循环出来的都为可迭代
也就是可以将一个列表扩展到另一个列表
#!/usr/bin/env python # -*- coding:utf-8 -*- a=["zou","lu","chen"] b=["1","2","3"] a.extend(b) print(a) #打印出['zou', 'lu', 'chen', '1', '2', '3'] 将一个列表扩展到另一个
删除元素
索引方式删除(删除单个元素)
格式:del 列表变量[要删除的下标]
#!/usr/bin/env python # -*- coding:utf-8 -*- a=["zou","lu","chen"] del a[0] print(a) #打印出['lu', 'chen'] 删除元素zou
切片方式删除(删除多个元素)
格式:del 列表变量[开始位置:结束位置]
#!/usr/bin/env python # -*- coding:utf-8 -*- a=["zou","lu","chen"] del a[0:2] print(a) #打印出['chen'] 删除元素zou lu
range
range函数可以产生一个连续的list,基本质还是list
#!/usr/bin/env python # -*- coding:utf-8 -*- a=range(10) print(a) print(type(a))
列表推导式
列表推导式书写形式:
[表达式 for 变量 in 列表] 或者 [表达式 for 变量 in 列表 if 条件]
#!/usr/bin/env python # -*- coding:utf-8 -*- a=range(10) print(a) b=[x**2 for x in a] print(b) c=([(x,x*10) for x in a]) print(c) d=[(x,y) for x in a if x%2 if x>3 for y in a if y>7 if y!=8] print(d) e=[x*y for x in [1,2,3] for y in [1,2,3]] print(e)
把列表当作栈来使用
List提供的一些方法使它很容易当作栈来使用,栈即是最后加入的元素最先取出(“后进先出”),添加一个元素到栈的顶部使用append()方法,从栈的顶部取出一个元素使用pop()方法(不提供明确的索引)
如:
#!/usr/bin/env python # -*- coding:utf-8 -*- stack=[2,3,4] stack.append(0) stack.append(1) print(stack) stack.pop() print(stack) stack.pop() print(stack)
把列表当作队列使用
队列即是第一个加进来的元素第一个取出(“先进先出”)。列表对于这个设想并不是那么有效率,从列表前面进行插入和取出很慢,原因是后面的元素必须每个都进行移动
为了实现队列,使用collections.deque,deque的设计使得它能快速从两端插入和取出
如:
#!/usr/bin/env python # -*- coding:utf-8 -*- from collections import deque queue=deque(["zou","lu","chen"]) queue.append("Bob") queue.append("John") print(queue) queue.popleft() print(queue) queue.popleft() print(queue)
列表的功能
转换列表
索引
切片
for循环
长度
删除元素
反转
排序
追加
插入
移除元素
索引位置
统计元素个数
扩展
清除