python全栈学习记录(七)列表、元组

列表、元组

一、列表

作用:存放多个数据
定义方式:

a=[1,2,3]
#列表内也可以嵌套列表,元组,字典和集合
b=[1,[1,2],{1:2},(1,2),{1,2,3}]

1.list的使用

list函数可以将可迭代对象转换为列表类型。

list({'name':'Tom','age':25})
<<<['name','age']

list((1,2,3))
<<<[1,2,3]

2.列表的索引与切片

索引:
切片、索引的具体规则和字符串相同,这里就不在详细介绍了。

my_frieds=['Tom','Jack','Marry','Alies']
#正向索引
my_frieds[1]
<<<'Jack'

#反向取值
my_frieds[-1]
<<<'Alies'

#赋值
my_frieds[1]='Timi'
my_frieds
<<<['Tom','Timi','Marry','Alies']

切片:

my_friends=['Tom','Jack','Marry','Alies']

#正向切片
my_friends[0:2]
<<<['Tom','Jack']

#正向带步长的切片
my_friends[0:4:2]
<<<['Tom','Marry']

#反向切片
my_friends[3:1:-1]
<<<['Alies', 'Marry']

#负值切片
my_friends[-3:-1]
<<<['Jack', 'Marry']

3.列表的内置函数

append(obj)函数可以将元素添加至列表尾部
extend(iterable)函数可以在列表尾部添加多个值

#append只能传入单个元素
a=[1]
a.append(2)
<<<[1,2]

#extend可以传入可迭代对象,extend会取出可迭代对象中的值将其添加至列表尾部
a.exxtend([3,4])
<<<[1,2,3,4]
a.extend((5,6))
<<<[1,2,3,4,5,6]

#如果append传入可迭代对象,这个可迭代对象会被视为一个整体添加至列表尾部
a.append((7,8))
<<<[1,2,3,4,5,6,(7,8)]

insert(index,obj)函数可以将值插入列表指定位置

a=[1,2]
a.insert(1,1.5)
a
<<<[1,1.5,2]

del函数可以删除列表的值,实际上del也可用于删除字典的键值对以及解除变量名的绑定关系

a=[1,2]
del a[0]
a
<<<[2]

remove(value)函数可以根据值删除列表的元素
pop(index)函数可以根据索引删除列表的值,默认会删除最后一个值,最后返回删除的值

my_friends=['Tom','Jack','Marry','Alies']
my_friends.remove(0)
<<<['Jack','Marry','Alies']

b=my_friends.pop()
my_friends
b
<<<['Jack','Marry']
<<<'Alies'

clear()函数可以清空列表

a=[1,2,3]
a.clear()
a
<<<[]

index(value,start,stop)函数可以在列表指定范围内[start,stop)查询某个元素第一次出现的位置并返回其索引,如果没查到会报错

a=[1,2,3,4]
a.index(2)
<<<1

a.index(4,0,3)
<<<报错

count(value)函数可以统计元素在列表中出现的次数

a=[1,2,1,3,45,1]
a.count(1)
<<<3

reverse()函数可以反转列表,相当于[::-1],但要注意reverse反转的是原列表,[::-1]得到的是新的列表

a=[1,2,3]
a.reverse()
a
<<<[3,2,1]

sort(key,reverse)函数可以给列表排序,当reverse=True时表示降序,reverse=False时表示升序(默认),key中可以传入一个函数地址。

#根据第二个值排序
def take(elem):
	return elem[1]
ls=[(1,3),(2,6),(3,5)]
ls.sort(key=take)
<<<[(1,3),(3,5),(2,6)]

#使用匿名函数
ls.sort(key=lambda x:x[1])
<<<[(1,3),(3,5),(2,6)]

#多指标排序
#先按第二个值升序,如果重复则按第一个值升序
ls=[(1,3),(2,6),(3,5),(1,6),(2,5)]
ls.sort(key=lambda x:(x[1],x[0]))
<<<[(1, 3), (2, 5), (3, 5), (1, 6), (2, 6)]

二、元组

元组是不可变的列表,能存多个值,但多个值只能取,而没法改
元组的定义方法:
注意点:

  • 元组中只有一个元素时必须加逗号
a=(1,2)


b=(1)
c=(1,)
type(b),type(c)
<<< <class 'int'> <class 'tuple'>

1.tuple的使用

tuple函数可以把可迭代对象转换为元组类型

tuple([1,2,3])
<<<(1,2,3)

tuple({1:2,3:4})
<<<(1,3)

2.元组的索引与切片

元组的索引和切片和列表相同,可以残酷上方的列表。

元组的值不可变,所以不能赋值,但是如果元组中存在列表、字典、集合等,这些列表、字典、集合是不可改变的,它们内部的值是可变的。

a=(1,2,[3,4,5])
a[0]=0
<<<报错

a[2]=[1,2]
<<<报错

a[2][0]=0
<<<(1,2,[0,4,5])

列表可变的底层原理:
指的是索引所对应的值的内存地址是可以改变的
元组不可变的底层原理:
指的是索引所对应的值的内存地址是不可以改变的
或者反过来说,只要索引对应值的内存地址没有改变,那么元组始终是没有改变的

3.元组的内置函数

元组可以使用index、count等函数,这些在列表中已经介绍过了,这里不在赘述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值