- list
list是一个有序的集合,序号从0起编,一个list中可以包含多种类型的数据
list转换列表
字符串,元组,列表
基本操作:索引 切片 追加 删除 长度 循环 包含
列表的类库功能
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
函数可以产生一个连续的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循环
长度
删除元素
反转
排序
追加
插入
移除元素
索引位置
统计元素个数
扩展
清除