【Python基础5】列表和元组


序列:每个元素都有编号(即位置或索引),第一个位置的索引为0,也可以由末尾反向取索引,从-1开始。 列表、元组和字符串都是序列。
散列:元素无编号(无序的),比如 字典集合
列表和元组的差异

列表元组
可修改不可修改
[‘a’,‘b’,‘c’](‘a’,‘b’,‘c’)

通用的序列操作

索引和切片

>>> name='Sudley'
>>> name[0]
'S'
>>> name[-1]
'y'
>>> name[0:]
'Sudley'
>>> name[:]
'Sudley'
>>> name[4:]
'ey'
>>> name[:-3]
'Sud'
>>> 

上面的切片中默认步长为1,我们可以自定义步长,但是需要注意步长不能为0

>>> name[0::2]
'Sde'
>>> name[0:5:2]
'Sde'
>>> name[0:4:2]
'Sd'
>>> name[4:0:2]
''
>>> name[4:0:-2]
'ed'
>>> 

序列相加、相乘

>>> [1,2,3]*3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
>>> [1,2,3] + ['4','5','6'] #一般而言不建议拼接不同类型的序列
[1, 2, 3, '4', '5', '6']
>>> 

成员资格

>>> 'Su' in 'Sudley'
True
>>> db = [
	['Sudley','111111'],
	['root','123456'],
	]
>>> u='Sudley'
>>> p='123456'
>>> [u,p] in db
False
>>> p='111111'
>>> [u,p] in db
True
>>>

长度、最大值和最小值

>>> num = ['a','b','c']
>>> len(num)
3
>>> min(num)
'a'
>>> max(num)
'c'
>>>

列表

列表方法

方法描述
alist.append(obj)追加元素,等同于alist[len(alist):len(alist)] = [obj]
alist.clear()删除alist所有元素
alist.count(obj)返回alist中与obj相等的元素个数
alist.copy()返回alist的副本,注意是浅复制
alist.extend(sequence)等同于alist[len(alist):len(alist)] = sequence
alist.index(obj)返回第一个与obj相等的元素的索引,如果没有则触发ValueError异常
alist.insert(index,obj)在index索引左边插入obj;如果index > 0,就等同于alist[index:index] = [obj]
alist.pop([index])删除并返回指定索引(默认是-1)
alsit.remove(obj)等同于del alist[alist.index(obj)]
alsit.reverse()就地以相反的顺序排列列表的元素
alist.sort([cmp][,key][,reverse])就地对alist的元素进行排序(稳定排序)。可通过提供比较函数cmp、键值数key(创建用户排序的键)和降序标志reverse(一个布尔值)进行定制

浅复制相关概念可参考
【Python基础9】浅谈深浅拷贝及变量赋值

基本操作

>>> x = [1,2]       #列表赋值
>>> x[1] = 3
>>> x
[1, 3]
>>> name = list('Sudley')     #列表和字符串之间的转换
>>> name
['S', 'u', 'd', 'l', 'e', 'y']
>>> str(name)
"['S', 'u', 'd', 'l', 'e', 'y']"
>>> for i in range(0,len(name)):
	name1 = name1 + name[i]
	
>>> name1
'Sudley'
>>> name[5:] = list('eee')    #切片赋值,可以实现插入或删除列表元素
>>> name
['S', 'u', 'd', 'l', 'e', 'e', 'e', 'e']
>>> name[0:5] = []
>>> name
['e', 'e', 'e']
>>> del name[1:]
>>> name
['e']
>>> 

列表方法

>>> #列表末尾追加元素
>>> num = [1,2]
>>> num.append(3)
>>> num
[1, 2, 3]
>>> num = [1,[1,2,3],2,3]
>>> num2 = num.copy()
>>> num[1][1] = 11
>>> num2
[1, [1, 11, 3], 2, 3]
>>> num[0] = 0
>>> num
[0, [1, 11, 3], 2, 3]
>>> num2
[1, [1, 11, 3], 2, 3]
>>>

>>> #列表拷贝
>>>> num = [1, 2, 3]
>>> num1 = num 
>>> num2 = num.copy() 
>>> num3 = num[:] 
>>> num[1] = 'a'
>>> num
[1, 'a', 3]
>>> num1
[1, 'a', 3]
>>> num2
[1, 2, 3]
>>> num3
[1, 2, 3]

>>> #元素计数
>>> num = [[1,2],1,1,[2,1,[1,2]]]
>>> num.count(1)
2
>>> num.count([1,2])
1

>>> #列表扩展
>>> a = [1,2]
>>> b = [3,4]
>>> a + b
[1, 2, 3, 4]
>>> a
[1, 2]
>>> a.extend(b)
>>> a
[1, 2, 3, 4]
>>> a.append(b)
>>> a
[1, 2, 3, 4, [3, 4]]

>>> #索引,只查找第一个出现的索引
>>> a.index(3)
2
>>> a.index([3,4])
4
>>> a.append(3)
>>> a.index(3)
2
>>> a
[1, 2, 3, 4, [3, 4], 3]

>>>#插入对象 
>>> a.insert(2,2.5)
>>> a
[1, 2, 2.5, 3, 4, [3, 4], 3]
>>> a.insert(4,3.5)
>>> a
[1, 2, 2.5, 3, 3.5, 4, [3, 4], 3]
>>> a.insert(-2,22)
>>> a
[1, 2, 2.5, 3, 3.5, 4, 22, [3, 4], 3]
>>> 

>>>#删除元素 
>>> a.pop()
3
>>> a.pop(0)
1
>>> 
>>> a
[2, 2.5, 3, 3.5, 4, [3, 4]]
>>> a.append(a.pop())
>>> a
[2, 2.5, 3, 3.5, 4, [3, 4]]
>>> a[1] = 2
>>> a
[2, 2, 3, 3.5, 4, [3, 4]]
>>> a.remove(2)
>>> a
[2, 3, 3.5, 4, [3, 4]]

>>>#排序
>>> a = [1,3,2]
>>> a.reverse()
>>> a
[2, 3, 1]
>>> a.sort()
>>> a
[1, 2, 3]
>>> a.reverse()
>>> a
[3, 2, 1]

>>>#常见错误
>>> b = a.sort()
>>> a
[1, 2, 3]
>>> b
>>> b = a.pop(1)    #pop()是唯一即修改列表又返回非None值的列表方法
>>> b
2
>>> 

元组

元组最大的特点是不能修改,一般用作字典的键

>>> a = (1,2)
>>> a[0]
1
>>> a[0] = 2
Traceback (most recent call last):
  File "<pyshell#91>", line 1, in <module>
    a[0] = 2
TypeError: 'tuple' object does not support item assignment
>>> a
(1, 2)
>>> a = 1,2
>>> a
(1, 2)
>>> a = 1,
>>> a
(1,)
>>> a = (1)    #元组的括号可以省略但是逗号不能省略
>>> a
1
>>> type(a)
<class 'int'>
>>> a = (1,)   
>>> type(a)
<class 'tuple'>
>>> a
(1,)
>>> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值