python-列表
一维列表
列表的定义
列表可以浅显理解为不同数据的集合,参同字符串。
列表的创建
- 空列表可以直接采用lista = [].
- 也可以使用lista = list().
- 也可在定义列表时直接赋具体内容,lista = [1,2.0234,True,‘ok’,[1,‘second’]]
- *lista = list(range(10))*生成0~9的列表,range(start, stop[, step])。
- 推导式创建列表:[a2 for i in range(10) if 2%2==0],第一步运算range(10),得到0-9,第二步计算02,12,22…9*2。第三步,把能被 2整除的数留存。
a = []
a
[]
b = list()
b
[]
c = [1,2.34,'ok']
c
[1, 2.34, 'ok']
d = list(range(1,12,3))
d
[1, 4, 7, 10]
#列表推导式
e = [a*2 for a in range(10) if a%2==0]
e
[0, 4, 8, 12, 16]
列表的访问
- 需要访问单个列表元素的时候可采用字符串索引方式。如lista = [1,2,3,4,5]。需要访问列表lista第2个元素,也即索引是1的对象。可以使用
lista[1]。
#定义列表lista。
lista = [1,2,3,4,5]
#打印列表lista
lista
[1, 2, 3, 4, 5]
#访问列表lista的第2个元素。
lista[1]
2
- 如需访问列表多个元素就需要用到切片slice。这和字符串的切片相同。在此不再赘述。
lista = [333,1.2314,'ok',False,666]#定义列表lista
lista #打印列表lista
[333, 1.2314, 'ok', False, 666]
lista[1] #访问列表lista第一个元素。
1.2314
lista[:] #访问整个列表,[[开始位置]:[结束位置]:步长],开始与结束位置超过列表长度没有关系,会自动识别开始位置为0,结束位置为len(lista)-1.
[333, 1.2314, 'ok', False, 666]
lista[:2] #访问lista列表的第一个元素至第三个元素之间的元素。包头不包尾。
[333, 1.2314]
lista[2:] #访问lista列表从第3个元素(索引位置为2)开始至结束的所有元素。
['ok', False, 666]
lista[::-1] #翻转lista列表。
[666, False, 'ok', 1.2314, 333]
lista[::2] #访问:lista列表的步长为2的所有元素。
[333, 'ok', 666]
lista[:88] #超过列表lista的长度可以正常访问不报错。
[333, 1.2314, 'ok', False, 666]
列表元素的新增
在列表新增中,比较有效率的方式是在列表后面附加元素,不改变列表的原有对象id。
- lista.append()
- lista.extend()
#定义列表lista
lista = [333,1.2314,'ok',False,666,'gogo', 111, 1.234]
id(lista) #查看lista的对象id.
1539167796416
#使用列表extend方法对lista列表新增三个元素。extend支持可迭代对象,可以
lista.extend(['go',11,1.24])
#打印lista列表的所有元素。
lista
[333, 1.2314, 'ok', False, 666, 'gogo', 111, 1.234, 'go', 11, 1.24]
id(lista)
1539167796416
- lista.insert(index,object)
d = [1,2,3,False]
id(d)
1539167887744
d.insert(2,'three')
d
[1, 2, 'three', 3, False]
id(d)
1539167887744
- 列表直接相加 lista + listb
lista = [1,2,3,4]
listb = ["ok",False]
lista + listb
[1, 2, 3, 4, 'ok', False]
列表中的元素删除
- 列表自有pop方法,默认弹出(删除)列表最后一个元素并显示,也可指定位置.lista.pop(index).
- del方法,del lista[index]。
- 列表自有remove方法,lista.remove(name),name是指元素的名字。
lista = [1, 2, 3, 4, 100, 200] #定义lista列表。
[1, 2, 3, 4, 100, 200]
lista.pop() #使用pop不带索引,默认删除列表最后一个元素。
200
lista #打印lista列表,200已被弹出。
[1, 2, 3, 4, 100]
lista.pop(2) #使用pop方法,索引位置为2,删除列表索引位置为2的第三个元素。
3
lista
[1, 2, 4, 100]
#使用del方法删除列表lista的第二个元素。
del lista[1]
lista
[1, 4, 100]
#使用列表的remove方法,删除列表中的第一个value元素。
lista = [100,2,3,100,4,5,100]
lista
[100, 2, 3, 100, 4, 5, 100]
id(lista)
1539167799680
lista.remove(100)
lista
[2, 3, 100, 4, 5, 100]
id(lista)
1539167799680
列表中的元素修改
可以使用lista[index],也可以使用列表的slice切片。自已尝试。
lista
[2, 3, 100, 4, 5, 100]
lista[0] = '111'
lista
['111', 3, 100, 4, 5, 100]
lista[:3]='q'
lista
['q', 4, 5, 100]
列表的其它方法
sort排序方法
- 从小到大排序
#定义lista列表
lista = [10,20,30.3,30,40]
#执行sort排序,从小到大。
lista.sort()
lista
[10, 20, 30, 30.3, 40]
- 小大到小排序。
lista
[10, 20, 30.3, 30, 40]
lista.sort(reverse=True)
lista
[40, 30.3, 30, 20, 10]
radnom.shuffle打乱列表顺序
执行shuffle需要首先加载random模块。
lista
[40, 30.3, 30, 20, 10]
import random
random.shuffle(lista)
lista
[30, 40, 20, 10, 30.3]
random.shuffle(lista)
lista
[40, 10, 20, 30, 30.3]
max,min,sum方法
比较列表中的最大与最小数,注意的是,不是列表自有方法。
- max 取列表中最大的数;
- min 取列表中最小的数;
- sum 对列表中的元素进行相加操作。
lista
[40, 10, 20, 30, 30.3]
max(lista)
40
min(lista)
10
sum(lista)
130.3
sorted,reversed方法。
这二个方法与列表自有的方法类似,不同的是reversed方法,是生成一个liest_reversediterator object。
lista
[40, 10, 20, 30, 30.3]
sorted(lista)
[10, 20, 30, 30.3, 40]
reversed(lista)
<list_reverseiterator object at 0x000001665D90C370>
list(reversed(lista))
[30.3, 30, 20, 10, 40]
二维多维列表
多维列表的创建
这和一维列表的创建没有什么本质上的区别,唯一需要注意的是,二维列表根本上就是一维列表里面的元素是另一个一维列表,二维列表也即是一维列表嵌套一维列表,三维列表就是三层嵌套。
示例:
有三个热门城市,我们需要记录它的城市基本信息(城市名称,所在省份,著名景点,地区编码)。
城市名称 | 所在省份 | 著名景点 | 地区编码 |
---|---|---|---|
周口 | 河南 | 太昊陵 | 0371 |
汉昌 | 武汉 | 武昌鱼 | 027 |
厦门 | 福建 | 白虎岩 | 0592 |
定义二维列表
在此可使用二维列表表示为:
listcity = [
[‘周口’,‘河南’,‘太昊陵’,371],
[‘汉昌’,‘武汉’,‘武昌鱼’,27],
[‘厦门’,‘福建’,‘白虎岩’,592]
]
访问二维列表
- 可以直接访问,示例
listcity
[['周口', '河南', '太昊陵', 371], ['汉昌', '武汉', '武昌鱼', 27], ['厦门', '福建', '白虎岩', 592]]
listcity[0]#访问列表listcity中的第一个元素。
['周口', '河南', '太昊陵', 371] #显示的是这个列表,既然 是列表,肯定会支持索引位置进行访问。
listcity[0][1] #访问listcity列表中的第一个元素(上一步得知它是一个列表对象)的第二个元素(也可称为索引位置为1)。
'河南'
- 也可遍历访问:
listcity
[['周口', '河南', '太昊陵', 371], ['汉昌', '武汉', '武昌鱼', 27], ['厦门', '福建', '白虎岩', 592]]
listcity_out=len(listcity) #我们知道二维列表里面有三条数据(三个一维列表),可以使用len()方法获取列表的长度。
listcity_out
3
listcity_in = len(listcity[0]) #二维列表里面的一维列表,查看每个列表的具体长度。这个放在遍历循环里面最好,可以智能检查长度并访问,在这里仅做示例。
listcity_in
4
for i in range(listcity_out):
for j in range(listcity_in):
print(listcity[i][j],end='\t')#打印一维列表里面的数据时使用tab结尾。
print() #每访问完一条一维列表后,进行换行处理。
#输出内容。
周口 河南 太昊陵 371
汉昌 武汉 武昌鱼 27
厦门 福建 白虎岩 592