python全栈_009_Python3基本数据类型--列表
Posted ixuby
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python全栈_009_Python3基本数据类型--列表相关的知识,希望对你有一定的参考价值。
1:列表的介绍
列表是python的基础数据类型之一 ,其他编程语言也有类似的数据类型. 比如C++中的数组, java中的数组等等. 它是以[ ]括起来, 每个元素用‘ , ‘隔开,而且可以存放各种数据类型,列表是可变数据类型(即可以改变列表内存中的值)
lst = [1, 2, 3, 4] print(lst, id(lst)) lst = [1, 2, 3, 4] # 重新创建一个列表 print(lst, id(lst)) lst[0] = ‘Hello‘ #修改第一个元素的值,修改之后内存地址是不会变的 print(lst, id(lst)) lst.append(‘2343423333dfsdfsdfsdfsd‘) # 增加一个元素,列表内存地址也是不会变的 print(lst, id(lst)) # 列表中的元素可以是各种数据类型,可以是列表,字符串,数字,字典等等 lst = [False, ‘Haha‘, 1, "吼吼", [1, [‘23‘,89], 8,0,"百度"], ("我","叫", "元", "组"), "abc", {"我叫":"dict字典"},{"我叫集合","集合"}] print(lst)
列表相比于字符串. 不仅可以存放不同的数据类型。而且可以存放大量的数据。32位python可以存放: 536870912个元素, 64位可以存放: 1152921504606846975个元素.而且列表是有序的(按照你保存的顺序),有索引, 可以切片方便取值。
2:列表的索引与切片
2.1:列表和字符串一样也拥有索引:
# 列表也有索引,索引从0开始 lst = [‘迈克尔·杰克逊‘, ‘苏有朋‘, ‘梁咏琪‘, ‘林志颖‘, ‘张学友‘, ‘刘德华‘, ‘中华人民共和国‘] print(lst[3]) # 林志颖 print(lst[-1]) # 中华人民共和国 print(lst[-1][2:4]) # 人民 lst[2] = ‘helloWorld‘ print(lst) # [‘迈克尔·杰克逊‘, ‘苏有朋‘, ‘helloWorld‘, ‘林志颖‘, ‘张学友‘, ‘刘德华‘, ‘中华人民共和国‘] s = ‘苏有朋‘ print(s) s[0] = ‘林‘ # 报错: TypeError: ‘str‘ object does not support item assignment print(s)
2.2:列表的切片:
# 切片,切片出来的是列表(什么类型切片出来的还是原来的类型) lst = [‘迈克尔·杰克逊‘, ‘苏有朋‘, ‘梁咏琪‘, ‘林志颖‘, ‘张学友‘, ‘刘德华‘, ‘中华人民共和国‘] print(lst[1:3]) # [‘苏有朋‘, ‘梁咏琪‘] print(lst[1:5:2]) # 取 第1, 3 位的;输出 [‘苏有朋‘, ‘林志颖‘] print(lst[-1:-4:-2]) # 取 第-1, -3 位的;输出 [‘中华人民共和国‘, ‘张学友‘] print(lst[2::-1]) # [‘梁咏琪‘, ‘苏有朋‘, ‘迈克尔·杰克逊‘] # 索引 与 切片 参考字符串的
3:列表的增删改查:
3.1:列表的增加操作:
增: 注意, list和str是不一样的,lst可以发生改变,所以直接就在原来的对象上进行了操作:
# 新增 # 1:append,每次都在末尾添加元素 lst = [] lst.append(‘林志颖‘) lst.append(‘张学友‘) lst.append(‘刘德华‘) lst.append(‘张柏芝‘) print(lst) # [‘林志颖‘, ‘张学友‘, ‘刘德华‘, ‘张柏芝‘] # 2:insert lst = [‘林志颖‘, ‘张学友‘, ‘刘德华‘, ‘张柏芝‘] lst.insert(2, ‘周杰伦‘) # 在2号位置插入,即在‘刘德华‘位置插入,‘刘德华‘及后面的数据向后移动;插入的时候,可能会导致元素移动 print(lst) # [‘林志颖‘, ‘张学友‘, ‘周杰伦‘, ‘刘德华‘, ‘张柏芝‘] # 3:迭代添加:extend lst = [‘刘德华‘, ‘张柏芝‘] lst.extend(‘林志颖‘) # 字符串为可迭代对象,会把字符串中的每个字符添加到列表中,输出: [‘刘德华‘, ‘张柏芝‘, ‘林‘, ‘志‘, ‘颖‘] print(lst) lst.extend([‘张学友‘]) # 迭代列表, [‘刘德华‘, ‘张柏芝‘, ‘林‘, ‘志‘, ‘颖‘, ‘张学友‘] print(lst)
3.2:列表的删除操作:
#删除: pop,remove,clear,del # 1:pop : 按照索引来删除,默认删除最后一个 lst = [‘林志颖‘, ‘张学友‘, ‘刘德华‘, ‘张柏芝‘] s = lst.pop() # 默认弹出最后一个,可以指定元素(索引)删除;返回删除的元素 print(s) # 张柏芝 print(lst) # [‘林志颖‘, ‘张学友‘, ‘刘德华‘] lst = [‘林志颖‘, ‘张学友‘, ‘刘德华‘, ‘张柏芝‘] s2 = lst.pop(1) # 输出1号为元素(‘张学友‘), 输出:[‘林志颖‘, ‘刘德华‘, ‘张柏芝‘] print(lst) # 2: remove,按照元素值来删除,删除时元素值要存在于列表中,不然会报错 lst = [‘林志颖‘, ‘张学友‘, ‘刘德华‘, ‘张柏芝‘] lst.remove(‘林志颖‘) # 指定元素(元素值) 输出 : [‘张学友‘, ‘刘德华‘, ‘张柏芝‘] print(lst) lst.remove(‘费玉清‘) # 报错 ValueError: list.remove(x): x not in list print(lst) # 3:clear,全部清空元素 lst = [‘林志颖‘, ‘张学友‘, ‘刘德华‘, ‘张柏芝‘] print(lst,id(lst)) lst.clear() # 元素全部清空,[] print(lst,id(lst)) # 4:del 输出,指定索引来删除,也可以切片删除(即指定删除范围) lst = [‘林志颖‘, ‘张学友‘, ‘刘德华‘, ‘张柏芝‘] del lst[1] # 指定元素(索引);[‘林志颖‘, ‘刘德华‘, ‘张柏芝‘] print(lst) #可以切片删除 lst = [‘林志颖‘, ‘张学友‘, ‘刘德华‘, ‘张柏芝‘] del lst[0:2] # 指定删除范围,输出:[‘刘德华‘, ‘张柏芝‘] print(lst)
3.3:列表的修改操作:
# 修改里面的元素 lst = [‘林志颖‘, ‘张学友‘, ‘刘德华‘, ‘张柏芝‘, ‘黄家驹‘, ‘周杰伦‘] print(lst) # 通过单个索引来修改 lst[2] = ‘梁咏琪‘ print(lst) # [‘林志颖‘, ‘张学友‘, ‘梁咏琪‘, ‘张柏芝‘, ‘黄家驹‘, ‘周杰伦‘] lst = [‘林志颖‘, ‘张学友‘, ‘刘德华‘, ‘张柏芝‘, ‘黄家驹‘, ‘周杰伦‘] lst[-3] = ‘蜘蛛侠3‘ print(lst) # [‘林志颖‘, ‘张学友‘, ‘刘德华‘, ‘蜘蛛侠3‘, ‘黄家驹‘, ‘周杰伦‘] # 通过切片来修改 lst = [‘林志颖‘, ‘张学友‘, ‘刘德华‘, ‘张柏芝‘, ‘黄家驹‘, ‘周杰伦‘] lst[1:3] = ‘男儿本色‘ print(lst) #会迭代字符串 [‘林志颖‘, ‘男‘, ‘儿‘, ‘本‘, ‘色‘, ‘张柏芝‘, ‘黄家驹‘, ‘周杰伦‘] lst = [‘林志颖‘, ‘张学友‘, ‘刘德华‘, ‘张柏芝‘, ‘黄家驹‘, ‘周杰伦‘] lst[1:3] = [‘男儿本色‘] print(lst) # [‘林志颖‘, ‘男儿本色‘, ‘张柏芝‘, ‘黄家驹‘, ‘周杰伦‘] # lst = [‘林志颖‘, ‘张学友‘, ‘刘德华‘, ‘张柏芝‘, ‘黄家驹‘, ‘周杰伦‘] # lst[1:5:2] = [‘男儿本色‘] #报错 ValueError: attempt to assign sequence of size 1 to extended slice of size 2 # print(lst) lst = [‘林志颖‘, ‘张学友‘, ‘刘德华‘, ‘张柏芝‘, ‘黄家驹‘, ‘周杰伦‘] lst[1:5:2] = [‘男儿本色‘,‘男儿本色2‘] # 注意如果元素的步长不是1,那么元素的个数要匹配 print(lst) # [‘林志颖‘, ‘男儿本色‘, ‘刘德华‘, ‘男儿本色2‘, ‘黄家驹‘, ‘周杰伦‘]
3.4:列表的查询操作:
# 列表是一个可迭代对象 # 列表的查询(或者说遍历) lst = [‘林志颖‘, ‘张学友‘, ‘刘德华‘, ‘张柏芝‘, ‘黄家驹‘, ‘周杰伦‘] for item in lst: print(item) for index,item in enumerate(lst): print(index,item)
4:列表的相关操作:
4.1:列表中元素出现的次数:
# lst.count(元素) ;元素个数,第一层元素的个数,不比较子元素中的值 lst = [‘林志颖‘, ‘张学友‘, ‘刘德华‘, ‘张柏芝‘, ‘黄家驹‘, ‘周杰伦‘, ‘张学友‘] print(lst) print(lst.count(‘张学友‘)) # 输出 2 lst = [‘张学友‘, ‘林志颖‘, ‘张学友‘, ‘刘德华‘, ‘张柏芝‘, ‘黄家驹‘, ‘周杰伦‘, ‘张学友‘] print(lst.count(‘张学友‘)) # 输出 3 lst = [‘张学友‘, [‘张学友‘], ‘林志颖‘, ‘张学友‘, ‘刘德华‘, ‘张柏芝‘, ‘黄家驹‘, ‘周杰伦‘, ‘张学友‘] print(lst.count(‘张学友‘)) # 1号位为 [‘张学友‘],不是字符串 ‘张学友‘;输出 3 print(lst.count([‘张学友‘])) # 输出 1
4.2:列表中元素的排序:
# 列表的排序 lst = [3, 4, 9, 2,89,12] print(lst) lst.sort() print(lst) # 降序 lst = [3, 4, 9, 2,89,12] lst.sort(reverse=True) # 降序 print(lst)
4.3:列表中元素的反转:
# 列表中元素的反转 lst = [3, 4, 9, 2,89,12] print(lst) lst.reverse() print(lst)
4.4:列表中元素的长度
# 其列表的长度 lst = [3, 4, 9, 2,89,12] print(len(lst))
4.5:列表中元素的下标
lst = [3, 4, 9, 2,89,12] print(lst.index(89)) # 输出 4 #print(lst.index(5)) # ValueError: 5 is not in list
5:列表的嵌套:
采用降维操作:一层一层的看就好。
# 采用降维操作.一层一层的看就好. lst = [‘林志颖‘, ‘张学友‘, ‘刘德华‘, [‘男儿本色‘, [‘吴孟达‘, ‘hello‘,‘周杰伦‘],‘功夫之王‘, ‘蜘蛛侠3‘]] print(lst) # 找出‘吴孟达‘,并打印出来 print(lst[3][1][0]) # hello 的首字母大写 lst[3][1][1] = lst[3][1][1].capitalize() print(lst)
6:range:
range可以帮我们获取到一组数据,通过for循环能够获取到这些数据。
for i in range(10): # 0 到 9 print(i) for i in range(1,10,2): print(i) # 1 3 5 7 9 for i in range(10,1,-2): print(i) # 10 8 6 4 2
7:列表的其他操作:
7.1:Python列表脚本操作符
列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。
Python 表达式 | 结果 | 描述 |
---|---|---|
len([1, 2, 3]) | 3 | 长度 |
[1, 2, 3] + [4, 5, 6] | [1, 2, 3, 4, 5, 6] | 组合 |
[‘Hi!‘] * 4 | [‘Hi!‘, ‘Hi!‘, ‘Hi!‘, ‘Hi!‘] | 重复 |
3 in [1, 2, 3] | True | 元素是否存在于列表中 |
for x in [1, 2, 3]: print x, | 1 2 3 | 迭代 |
7.2:Python列表函数&方法
序号 | 函数 |
---|---|
1 | cmp(list1, list2) 比较两个列表的元素 |
2 | len(list) 列表元素个数 |
3 | max(list) 返回列表元素最大值 |
4 | min(list) 返回列表元素最小值 |
5 | list(seq) 将元组转换为列表 |
Python包含以下方法:
序号 | 方法 |
---|---|
1 | list.append(obj) 在列表末尾添加新的对象 |
2 | list.count(obj) 统计某个元素在列表中出现的次数 |
3 | list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) |
4 | list.index(obj) 从列表中找出某个值第一个匹配项的索引位置 |
5 | list.insert(index, obj) 将对象插入列表 |
6 | list.pop(obj=list[-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
7 | list.remove(obj) 移除列表中某个值的第一个匹配项 |
8 | list.reverse() 反向列表中元素 |
9 | list.sort([func]) list.sort(reverse=True) 对原列表进行排序 |
8:总结:
1:列表的定义:
能装对象的对象,由[]表示,由‘,‘隔开;是可变数据类型
索引和切片,从0开始
[start,end,step]
2:列表的增,删,改,查
1:新增:append(),insert(),extend()(迭代添加)
2:删除:pop(),remove(),clear(),del
3:改:索引修改,切片修改
4:查询:索引查询,for el in lst:
5:操作:count(),index(),find(),sort(reverse = true),reverse()
3:range()
range(10) # 0到 9
range(1,12) # 1 到 11
range(1,12,3) # 1 4 7 10
for el in lst: # 没有索引
for i in range(len(lst)):
lst[i]
以上是关于python全栈_009_Python3基本数据类型--列表的主要内容,如果未能解决你的问题,请参考以下文章
python3全栈开发-内置函数补充,反射,元类,__str__,__del__,exec,type,__call__方法