2021-10-06 python从入门到精通--第五章 列表和元组

序列

索引

i = [1, 2, 3, 4, 5]
i[0] = 1
i[-1] = 5

切片

i[0:4:2] #[1, 3]
i[0:4] #[1, 2, 3, 4]
i[:] #[1, 2, 3, 4, 5]

序列相加

i = [1, 2, 3, 4, 5]
j = [‘a’, ‘b’, ‘c’, ‘d’]
k = i + j
k #[1, 2, 3, 4, 5, ‘a’, ‘b’, ‘c’, ‘d’]

乘法

i = [1, 2, 3]
j = i * 3
j #[1, 2, 3, 1, 2, 3, 1, 2, 3]

包含/不包含

i = [1, 2, 3, 4, 5]
1 in i #True
1 not in i #False

长度/最大值/最小值

i = [1, 2, 3, 4, 5]
len(i) #5
max(i) #5
min(i) #1

列表

创建列表

i = [1, 2, 3, 4, 5]
i = [] #空列表
list(range(10,20,2)) #[10, 12, 14, 16, 18]

删除列表

del i #python自带垃圾回收,即使不手动删除也会回收

遍历列表

for item in listname:
	print(item)
for index,item in enumerate(listname):
	print(index,item)	#使用enumerate可以打印元素值和其索引

添加列表元素

listname.append(obj)
listname.extend(seq)	#seq列表的内容全部追加到listname的后面

删除列表元素

i = [1, 2, 3, 4, 5]
del i[-1]	#根据索引删除列表最后一个元素
if i.count(2) > 0:	#通过判断元素出现的次数,判断元素是否存在
	i.remove(2)	#根据元素值删除元素 [1,3, 4, 5]

列表统计计算

listname.count(obj)		#获取元素出现的次数
listname.index(obj)		#获取元素首次出现的下标
sum(iterable, start)		#列表的元素和 + start(default = 0)

列表排序

listname.sort(key=None, reverse=False)
sorted(iterable, key=None, reverse=False)
#False:升序,True:降序

列表推导式

根据指定范围生成列表

list = [Expression for var in range]
例:randomnumber = [random.randint(10,100) for i in range(10)]
	#[65, 44, 87, 64, 30, 40, 62, 79, 17, 36]

根据列表生成新列表

newlist = [Expression for var in list]
例:price = [1200, 5330, 2988, 6200, 1998, 8888]
	sale = [int(x * 0.5) for x in price]
	#[600, 2665, 1494, 3100, 999, 4444]

从列表中选择符合条件的元素组成新列表

newlist = [Expression for var in list if condition]
例:sale = [x for x in prece if x > 5000]
	#[5330, 6200, 8888]

二维列表

直接定义

listname  = [[1,2,3],
		   [4,5,6],
		   [7,8,9]]

使用for循环创建

arr = []
for i in range(2):
	arr.append([])
	for j in range(5):
		arr[i].append(j)
#[[0,1,2,3,4],
   [0,1,2,3,4]]

元组

元组为不可变序列

元组创建

tuplename = (1, 2, 3, 4, 5)
#类型可以不同
tuplename = (‘python’, 500, (‘abc’, ‘def’), [‘ijk’, ‘opq’])
#小括号不是必须的,只要以逗号隔开,即认为是元组
tuplename = ‘python’, 500, (‘abc’, ‘def’), [‘ijk’, ‘opq’]
#如果创建的元组只包含一个元素,需要在最后加一个逗号

>>> i = 500,
>type(i)
<class 'tuple'>
>>> i = 500
>>> type(i)
<class 'int'>
>>> i = '123'
>>> type(i)
<class 'str'>
>>> i = '123',
>>> type(i)
<class 'tuple'>

创建空元组

emptytuple = ()
用于当函数参数或返回值类型为元组类型时使用

创建数值元组

tuple(data)
data可以为range对象,字符串,元组

例:tuple(range(10, 20, 2))
	#(10, 12, 14, 16, 18)

删除元组

del tuplename #python会自动回收

修改元组

元组为不可变序列,不能修改单个元素
可以重新赋值
i = (1, 2, 3)
i = (4, 5, 6)
可以连接,连接内容必须都是元组

i = (1, 2, 3, 4)
j = 5,		#如果没有逗号会报错
k = i + j
#(1, 2, 3, 4, 5)

元组推导式

>>>randomnumber = (random.randint(10, 100) for i in range(10))
>>> type(randomnumber)				#生成了一个生成器对象
<class 'generator'>
>>> randomnumber = tuple(randomnumber)		#转换成列表可以使用list(randomnumber)
>>> type(randomnumber)
<class 'tuple'>
>>> randomnumber
(27, 99, 48, 53, 37, 63, 38, 100, 11, 40)

如果要直接使用生成器对象,可以通过for循环遍历,或者使用 next()方法进行遍历

>>>number = (i for i in range(3))
>>>print(number.__next__())
>0
>>>print(number.__next__())
>1
>>>number = tuple(number)
>>>print(number)
>(2,)

原生成器对象在遍历之后,遍历过的元素就不再存在,转换之后元组中只剩一个元素

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值