Python_Day3_列表&元组

运算符

在这里插入图片描述

列表(list)

常用序列结构:字符串、列表、元组、字典、集合

a = [10,20,30,40]:首先创建四个对象,然后将4个对象的ID保存到列表里面(a[0]…),a变量保存着列表的ID。

列表是可变的,不同于字符串。

>>> a = [10,'sxl','1万']
>>> id(a)
2283244129664
>>> id([10,'sxl','1万'])
2283244125440
>>> id(10)
140735345932352
>>> id(a[0])
140735345932352

4种创建列表方法

  • 基本语法[]
>>> a = [] 		#创建一个空的列
  • list()创建

通常将可迭代对象转化为列表

>>>a = list() 		 #等价于  a = [] 
>>>a = list('sxl')
>>> a
['s', 'x', 'l']
>>> list(range(5))
[0, 1, 2, 3, 4]
  • range()创建整数列表

range([start,] end [,step])

 >>> list(range(3,15,2))
[3, 5, 7, 9, 11, 13]
>>> list(range(15,3,-1))
[15, 14, 13, 12, 11, 10, 9, 8, 
  • 推导式生成列表
>>> a = [x*2 for x in range(100) if x%9==0] #通过 if 过滤元素
>>> a
[0, 18, 36, 54, 72, 90, 108, 126, 144, 162, 180, 198

列表元素的增加

一般只在尾部操作,内部插入,列表元素移动,效率低

#append()方法,尾部添加新元素,不创建新的列表对象
>>> a = ['sxl',123]
>>> a.append(666)
>>> a
['sxl', 123, 666]
#extend()方法,尾部添加新列表,不创建新的列表对象
>>> a.extend([33,'yq'])
>>> a
['sxl', 123, 666, 33, 'yq']
#+运算符操作,创建新的列表对象
>>> a = [20,40]
>>> id(a)
46016072
>>> a = a+[50]
>>> id(a)
46015432
#insert()插入元素,元素后移
>>> a.insert(2,'zpw')
>>> a
['sxl', 123, 'zpw', 666, 33, 'yq']
#乘法扩展
>>> a *=3
>>> a
['sxl', 123, 'zpw', 666, 33, 'yq', 'sxl', 123, 'zpw', 666, 33, 'yq', 'sxl', 123, 'zpw', 666, 33, 'yq']

列表元素的删除

本质上还是拷贝元素

#del 删除		针对索引
>>> a = [100,200,'30',66,30,199,455,30,60]
>>> del a[6]
>>> a
[100, 200, '30', 66, 30, 199, 30, 60]
#pop()		针对索引,删除指定位置,并且返回
>>> a.pop()
60
>>> a
[100, 200, '30', 66, 30, 199, 30]
>>> a.pop(0)
100
>>> a
[200, '30', 66, 30, 199, 30]
#remove(),针对具体元素(首次出现)
>>> a.remove(30)
>>> a
[200, '30', 66, 199, 30]

列表元素访问和计数

>>> a.index('30')		#索引
1
>>> a.count(30)			#计数
1
>>> len(a)				#长度
5
>>> 20 in a				#判断
False

列表切片

同字符串的切片操作

>>> a
[200, '30', 66, 199, 30]
>>> a[1:]
['30', 66, 199, 30]
>>> a[1:3]
['30', 66]
>>> a[-3:-1]
[66, 199]
>>> a[:-1]
[200, '30', 66, 199]

列表遍历

for obj in listObj:
print(obj)

列表排序

  • sort()排序

直接修改原列表,不创建新列表
调用列表对象的方法。

>>> a = [1,3,6,0,5,4,2]
>>> a.sort()
>>> a
[0, 1, 2, 3, 4, 5, 6]
>>> a.sort(reverse = True)
>>> a
[6, 5, 4, 3, 2, 1, 0]
  • 内置函数sorted()排序
>>> sorted(a)		#生成新列表,原列表不变,默认升序
[0, 1, 2, 3, 4, 5, 6]
>>> a
[6, 5, 4, 3, 2, 1, 0]

小疑问:sort()不返回值,只是一个方法;而sorted()返回值(对象),是一个函数

常用函数

>>> a = [3,7,1,9,10,4] 
>>> max(a) 
10
>>> min(a) 
1
>>> sum(a) 
34

二维列表

和C语言的二维数组相似

a = [
    ['sxl',21,1000],
    ['yq',21,500]
]
for i in range(2):
    for j in range(3):
        print(a[i][j],end = '\t')
    print()
#以下为打印出的表格
sxl	21	1000	
yq	21	500	

元组(tuple)

列表可变,元组不可变序列,不能修改,以下方法同列表

  1. 索引访问
  2. 切片操作
  3. 连接操作
  4. 成员关系操作
  5. 比较运算操作
  6. 计数:元组长度 len()、最大值 max()、最小值 min()、求和 sum()等

元组创建

  • 基本语法()
>>> a = (1,2,3) 
>>> a
(1, 2, 3)
>>> b = (1,) 		#一个元素,必须加,
>>> b
(1,)
  • tuple()创建
>>> a = tuple(range(4)) 
>>> a
(0, 1, 2, 3)
>>> a = tuple('sxl')    
>>> a 
('s', 'x', 'l')
  • ZIP,将多列表合并为元组
>>> a
[1, 2, 3, 5, 9]
>>> 
>>> a
[1, 2, 3, 5, 9]
>>> b
[66, 77, 88]
>>> c = zip(a,b) 
>>> c
<zip object at 0x000002A2D8A98548>
>>> tuple(c) 
((1, 66), (2, 77), (3, 88))
  • 生成器推导式创建元组
>>> s = (x*2 for x in range(5))		#推导式
>>> s								#生成器,只生成一次
<generator object <genexpr> at 0x000002A2D8915548>
>>> tuple(s) 						#生成器转化为元组
(0, 2, 4, 6, 8)

元组排序

>>> a = (3, 5, 1, 2, 9)
>>> sorted(a) 	
[1, 2, 3, 5, 9]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值