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]


原文地址:https://www.cnblogs.com/ixuby/p/10117754.html

时间: 2024-10-08 12:33:27

python全栈_009_Python3基本数据类型--列表的相关文章

python全栈day 2 数据类型

一,模块 sys模块                   os模块 import sys #print(sys.path) #打印环境变量 print(sys.argv) print(sys.argv[2]) import os #cmd_res = os.system("dir") #执行命令 ,不保存结果 cmd_res = os.popen("dir").read() print("-->",cmd_res) os.mkdir(&qu

骑士计划-python全栈07 基础数据类型的补充

元组 如果元组中只有一个数据,且没有逗号,则该"元组"与里面的数据的数据类型是相同的 # tu = ("alex") #class str tu = (1) #class int # tu = (True) #class bool print(type(tu)) 列表 列表与列表之间可以相加 l1 = [1,2,3] l2 = ['alex','wusir'] l3 = l1 + l2 print(l3) #[1, 2, 3, 'alex', 'wusir'] 注意

python全栈_004_Python3基本数据类型

1:什么是可变数据类型和不可变数据类型: 可变数据类型:value值改变,id值不变(即变量的内存地址不改变),即修改变量的值还在原来的内存中修改,不用重新创建一个对象,分配一块内存: 不可变数据类型:value值改变,id值也随之改变(即变量的内存地址也改变),即原来内存中的值不能修改,修改变量的值,不会在原来的内存中修改,会重新创建一个对象,分配一块内存: 怎么判断是否可变???  是否可变,看能否在原来中的内存中修改,能修改就是可变数据类型,不能修改就是不可变数据类型. 判断方法:改变变量

Python全栈之路----数据结构—列表

1.列表是一个数据的集合,集合内可以放任何数据类型,可对集合进行方便的增删改查操作.列表里面的数可以重复. L1 = [ ] #定义空列表 L2 = [ 'a' , 'b' , 'c' , 'd' ] #存四个值,索引为0-3 L3 = [ 'abc' , [ 'def' , 'ghi' ] ] #嵌套列表 2.列表的功能: 创建,查询( L[n]索引值为n的元素:L.count(n)查找有多少个元素为n:L.index(n)查找元素为n的索引值),切片,增加(L.append(n)在最后加入为

Python全栈之路----数据类型—字典

字典:可变,一种key-value的数据类型 info = { 'stu1101' : 'TengLan Wu' , 'stu1102' : 'LongZe Luola' , 'stu1103' : ' XiaoZe Maliya' } 1.特点:key-value结构:key必须可hash(被hash值不变),且必须唯一.必须为不可变类型:无序的(因为无索引,通过key查询):查找速度快      2.基本操作:创建,添加,查找,修改,删除,清空 1 >>> info = { 2 ..

Python全栈之路---数据类型—字符串

字符串:有序的字符的集合,用于存储和表示基本的文本信息,一对单.双.或三引号中间包含的内容称之为字符串 1.特性:有序,不可变(开辟新地址存储字符串,python解释器会定期清空不用了的已存储的) >>> a = 'alex' >>> id(a) 1806635111064 >>> a = 'Jack' >>> a 'Jack' >>> id(a) 1806635111232  2.操作  常用:isdigit  r

python全栈开发 * mysql数据类型 * 180829

* 库的操作 (增删改查)一.系统数据库查看系统库命令 show databases1.information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息.列信息.权限信息.字符信息等2.performance_schema: MySQL 5.5开始新增一个数据库:主要用于收集数据库服务器性能参数,记录处理查询请求时发生的各种事件.锁等现象3.myslq: 授权库,主要存储系统用户的权限信息4.test: MySQL数据库系统自动创建的测试数据库二.创建

Python全栈之路----数据类型—元组类型

元组类型:有序,不可变的,又叫只读列表  names = ("alex","jack","eric") 1.元组本身不可变,但如果元组中有可变元素,如列表,那么元组中的这个可变元素是可以改变的     2.相关操作  切片 >>> n2 = (1,2,3,4,5,6,7,8) >>> n2[2:5] (3, 4, 5) >>> n2 = (1,2,3,['a','b'],5) >>

Python 全栈开发:python列表List

列表 列表是python中经常使用的数据类型,用于存放多个值. 表现形式:在[ ]内用逗号分隔,可以存放n个任意类型的值 eg: #单一类型 users=['yangli','yite','fixd'] #多类型,列表嵌套 users=['room01',['yangli',20,'音乐'],['yite',20,'篮球'],] 列表常用方法 和 函数 方法 函数 常用的操作 eg: len(list) #len(list) 计算列表的长度 ls = ['a','b','c','d'] leng