9.29学习日志

一.Python列表(list)

Python 支持多种复合数据类型,可将不同值组合在一起。最常用的**列表** ,是用方括号标注,逗号分隔的一组值。列表可以包含不同类型的元素,但一般情况下,各个元素的类型相同

# 列表,是一种复合数据(数据容器)
x = [10,20,3.14,10+20j,True,"a"]
print(x)

1、访问列表中的值

1.1 索引

与字符串的索引一样,列表索引从 0 开始,第二个索引是 1,依此类推。

1.2 反向索引

索引也可以从尾部开始,最后一个元素的索引为 -1,往前一位为 -2,以此类推。

1.3 切片索引

使用下标索引来访问列表中的值,同样你也可以使用方括号 [] 的形式截取字符

注意:切片是浅拷贝操作

# 取列表中的数据,列表的索引(下标,index)不能超出索引范围(越界)
y1 = x[0]
y2 = x[-1]
y3 = x[5]
print(y1,y2,y3,sep="-")
print(len(x))

# 循环打印列表中的元素
x = [100,200,50,23,1222,55,44,88,9,6,44,41,5,23,5,8]
for i in range(len(x)):
    print(x[i],end=" ")
print(f"\n{len(x)}")
for el in x:
    print(x,end=" ")
print("\n")

# 切片索引
x = [10,20,30,40,50,60,70]
x2 = x[3:5]
print("x2:",x2)
x3 =x[2:-2]# 从左往右取数据,从下标2对应的元素开始取到下标为-2的数据。
print("x3:",x3)
x4 = x[-1:4]# 如果切片的范围没能取到任何元素,就会得到一个空的列表(不会报错)
print("x4:",x4)
x5 = x[5:100]# 如果切片范围超过原列表范围,超过的范围同样为空(不会报错)
print("x5:",x5)
x6 = x[:4]# 省略前面的,表示从零开始
print("x6:",x6)
x7 = x[4:]# 省略后面的,表示到len()结束
print("x7:",x7)
x8 = x[:-1]# 表示空列表
print("x8:",x8)
x9 = x[-1:]# 表示取最后一个元素组成列表
print("x9:",x9)
x10 = x[1:7:2]# 步长为2
print("x10:",x10)
x11 = x[:7:2]# 0,2,4,6
print("x11:",x11)
x12 = x[1:5:-1] # 不行,取的为空。一般步长为负数前面两个都不填。
print(x12)
# 把一个列表反转
x13 = x[::-1]

对于浅拷贝与深拷贝:

# 切片生成的是一个新列表。
# 列表中切片的元素是一种浅拷贝过来的元素,浅切片
# 切片后,新列表中的元素和原列表中切片范围的元素“长得一样”,是通过浅拷贝得到的。
x = [[2,3],10,20,30,40,50,60]
x2 = x[:5]
print("x",x)
print("x2:",x2)
print(id(x),id(x2))# x和x2不是同一个id
print(id(x[0]),id(x2[0]))# 指向同一个引用
print(id(x[1]),id(x2[1]))
x2[0][0] = 1
print("x2的下标0对应的列表元素被修改后的x2:",x2)
print("x2的下标0对应的列表元素被修改后的x:",x)
# 深拷贝
x = [[2,3],10,20,30,40,50,60]
x3 = copy.deepcopy(x[:5])
print(id(x),id(x3))# x和x3不是同一个id
print(id(x[0]),id(x3[0]))# 不指向同一个引用
x3[0][0] = 1
print("x3的下标0对应的列表元素被修改后的x3:",x3)
print("x3的下标0对应的列表元素被修改后的x:",x)
# 浅拷贝
x = [[2,3],10,20,30,40,50,60]
x4 = copy.copy(x[:5])
print(id(x),id(x4))# x和x4不是同一个id

2、更新列表

对列表的数据项进行修改或更新,也可以使用 append() 方法来添加列表项

# 更新列表(修改列表)
x = [10,20,30,40,50]
print(x[0])
x[0] = 100# 通过下标修改列表中的数据
print(x)
print(x[0])

# 添加元素到列表的末尾,一次只能加一个元素。
x.append(60)
x.append(70)
print(x)

3、删除列表元素

 可以使用 del 语句来删除列表的的元素

# 删除列表的元素
x = [10,20,30,40,50]
x[2] = None
# del x[2]
# del x # 删除变量x,释放空间
# x = []# 更新变量
print(x)
print(len(x))
print(x[2])

4、列表操作符

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迭代
# 列表运算
x = [10,20,30,40]
# x2 = x+20 # 错误,不能相加
x2 = x + [10,20,30]
print(x2)
x3 = x*2
print(x3)# *n表示列表重复n次,n为整数,n为0是得到空列表
#
x = [[10,20],[20,30],40]
x2 = [10,20]
print(x[2])
print(x[0],x2)
print(id(x[0]),id(x2))
re = x2 in x# x2中保存的数据在x中有没有“一样”(数据一样就行不一定非得是同一个元素)的数据
print(re)

# 笔试题
x = [10,20,30,40]
# r = range(len(x))# 数列,也是数据容器
for i in range(len(x)):
    # print(i,x[i])
    #x[i] = i
    temp = x[i]
    del x[i]
    x.append(temp)
print(x)

5、嵌套列表

使用嵌套列表即在列表里创建其它列表

# 嵌套列表
x = [1,2,3,4]
x2 = ["a","b","c"]
x3 = [x,x2]
print(x3)
print(x3[0][3])

6、Python列表常用API

操作列表的函数

序号函数
1len(list)列表元素个数
2max(list)返回列表元素最大值
3min(list)返回列表元素最小值
4list(seq)将可迭代数据转换为列表,常见官方可迭代数据:列表,序列(range),字符串,元组
# 列表常用api
x = [10,20,30,40]
print(len(x))
print(max(x))
print(min(x))

re = range(20)
re = 'hello'
re = (10,20,30,40)
x= list(re)
print(x)

列表的方法

序号方法
1list.append(obj)在列表末尾添加新的对象
2list.count(obj)统计某个元素在列表中出现的次数
3list.extend(seq)在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
4list.index(obj)从列表中找出某个值第一个匹配项的索引位置
5list.insert(index, obj)将对象插入列表
6list.pop(index=-1)移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
7list.remove(obj)移除列表中某个值的第一个匹配项
8list.reverse()反向列表中元素
9list.sort( key=None, reverse=False)对原列表进行排序: x.sort(key=lambda a:abs(a-3), reverse=False)
10list.clear()清空列表
11list.copy()复制列表

 

x = [[10,20],10,20,[10,20]]
n = x.count(10)# 查看x列表中的元素有几个是10,不看元素内部。
print(n)
print(x.count([10,20]))

x = [10,20,30,40]
x2 = [10,1,2,3,4]
re = x.extend(x2)# 会直接修改x列表,.extend()括号中只能填可迭代数据
print(x)

x = [10,20,30]
re = x.pop(1)# 移除指定下标对应的元素,返回这个元素,不填时默认移除最后一个元素
# 移除指定下标不能越界
print(re)
print(x)

x = [10,20,10,30,None,10]
re = x.remove(None)# 不返回数据,不能越界,不然会报错
print(re,x)

x = [10,20,30]
x.clear()# 不改变id
print(x)
x = []# 重新开辟空间
print(x)

x = [10,20,30]
x2 = x.copy()
print("x:",x)
print("x2:",x)
print(x is x2)
print(id(x),id(x2))
x2[0] = 100
print(x,x2)
x.reverse()
print(x)

x = [1,8,6,-9,2,7,3,4]
x.sort(key=lambda a:a**2)
print(x)

二.Python元组(tuple)

Python 的元组与列表类似,不同之处在于元组的元素不能修改。

元组使用小括号 ( ),列表使用方括号 [ ]。

1、创建元组

元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

1.1 存放相同类型的数据

tup1 = (1, 2, 3, 4, 5 )

1.2 存放不同类型的数据

tup2 = ( 'hqyj', 2004)

1.3 不需要括号也可以

tup3 = "a", "b", "c", "d"

1.4 只包含一个元素

元组中只包含一个元素时,需要在元素后面添加逗号 ,否则括号会被当作运算符使用:

x = (10,"hello",False,None,[10,20])
print(x)

x = 10,20,50,"hello",True
print(x)

x = (10)# 是括号运算符,后面加逗号才是元组
print(x)
x = (10,)# 表示只有一个元素的元组
print(x)
x = 20,
print(x)
a = 55
x = a,
print(x)

2、访问元组

元组与字符串类似,下标索引从 0 开始,可以进行截取,组合等。  

# 元组也是一种数据容器,但是只能取,不能增删改
x = 10,20,30,[10,20]
print(id(x[3]))
print(x)
print(x[2])
print(x[-1])
print(x[1:])
x[3][0] = 30# 可以改列表内部元素但是不能改列表这个元素
print(id(x[3]))
print(x)

a,b,c,d = x# 相当于a = x[0],b = x[1],c = x[2],d = x[3]
print(a,b,c)# 即多变量赋值

3、修改元组

元组中的元素值是不允许修改的,但我们可以对元组进行连接组合

tup1 = (12, 34.56)
tup2 = ('abc', 'xyz') 

# 创建一个新的元组
tup3 = tup1 + tup2
print (tup3)

# 以下修改元组元素操作是非法的。
# tup1[0] = 100
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值