python标准数据类型之列表、元组

在讲今天的内容之前,让我们先来了解一下标准类型的可变和不可变。

  • 不可变的数据类型:Number、String、Tuple
  • 可变的数据类型:List、Dictionary、Set

Python采用的是基于值的内存管理方式,如果为不同变量赋值为相同值(仅适用于-5至256的整数和短字符串),这个值在内存中只有一份,多个变量指向同一块内存地址(即id)。

我就拿String和List举例子吧 ?

List是可变对象。
>>>alist = [3,4,5]
>>>id[alist]
44359928
>>>alist[1] = 6
>>>alist
[3,6,5]
>>>id(alist)
44359928

我们可以发现改变列表内容之后,内存地址并没有变。因为List是可变的,可以在原地修改。

String是不可变对象
>>> i = 4
>>> id(i)
1636290384
>>> i += 1
>>> id(i)
1636290416

*可以看到当字符串改变时,地址也会跟着改变。所以它是不可变的。

一、列表

  • 本质:是一种有序的集合。
  • 可以通过dir(list)help(list)查看列表的函数。

创建列表

#创建1  
>>> AList = [];AList # 创建了一个空列表
[]
#创建2
>>> BList = list();BList
[]
#创建3 
>>>list = [1,2,'good',True]  # 注意:列表中的元素数据可以是不同类型的。
>>>print(list)
[1, 2, 'good', True]

添加

  • 一个元素的添加:
>>> AList.append(1);AList
[1]
  • 多个元素的添加:
>>> AList.extend([2,3]);AList
[1, 2, 3]

列表元素的插入(insert)

  • 语法:L.insert(index, object)
>>> AList
[1, 2, 3]
>>> AList.insert(3,4)
>>> AList
[1, 2, 3, 4]
# 第3个位置插入元素'4'

弹出(pop)

  • 语法:L.pop([index])
  • pop后返回pop的值,同时原列表元素会发生改变
>>> AList
[1, 2, 3, 4]
>>> AList.pop(3)
4
>>> AList
[1, 2, 3]

索引 (index)

  • 语法:L.index(value, [start, [stop]])
>>> AList
[1, 2, 3]
>>> AList.index(3)
2

删除(remove)

  • 语法:L.remove(value)
>>> AList
[1, 2, 3]
>>> AList.remove(1)
>>> AList
[2, 3]
#与pop类似,但不会返回值

复制(copy)

  • 语法:L.copy()
>>> AList
[1, 2, 3]
>>> CList = AList.copy()
>>> CList
[1, 2, 3]
>>> AList.remove(1)
>>> AList
[2, 3]
>>> CList
[1, 2, 3]
# 用copy复制过来的列表,不会受原列表的改变而影响

记数(count)

  • 语法:L.count(value)
>>> DList = [1,1,2,3,4,5,1,2]
>>> DList
[1, 1, 2, 3, 4, 5, 1, 2]
>>> DList.count(1)
3

逆序排序(reverse)

  • 语法:L.reverse()
>>> EList = [5,2,3,4,1]
>>> EList.reverse();EList
[1, 4, 3, 2, 5]
#逆序排序还可通过切片完成
>>> EList = [5,2,3,4,1]
>>> EList[::-1]
[1, 4, 3, 2, 5]

顺序排序(sort)

  • 语法:L.sort(key=None, reverse=False)
#默认从小到大排序
>>> EList
[1, 4, 3, 2, 5]
>>> EList.sort();EList
[1, 2, 3, 4, 5]

清空(clear)

  • 语法:L.clear()
>>> AList
[2, 3]
>>> AList.clear()
>>> AList
[]

二、元组

  • 本质:是一种有序结合。
  • 可以通过dir(tuple)help(tuple)查看列表的函数。

创建

元组()不是必须的,但是,是必须要有的

>>> a = (1,2,3)
>>> type(a)
<class 'tuple'>
>>> a = 1,
>>> type(a)
<class 'tuple'>
# 空元组的创建
>>> c = tuple()
>>> c
()

记数(count)

  • 语法:T.count(value)
>>> tup1 = (1,2,4,2,2,3)
>>> tup1.count(2)
3

索引(index)

  • 语法:T.index(value, [start, [stop]])
>>> tup1
(1, 2, 4, 2, 2, 3)
>>> tup1
(1, 2, 4, 2, 2, 3)

修改

#尽管元组时不可变的,但可以通过对元组进行组合来修改元组
>>> tup1
(1, 2, 4, 2, 2, 3)
>>> tup2 = ('a','b','v')
>>> tup3 = tup1 + tup2;tup3
(1, 2, 4, 2, 2, 3, 'a', 'b', 'v')

复制

元组可以通过*进行复制

>>> tup = 1,
>>> tup1 = tup * 3;tup1
(1, 1, 1)

删除

元组可以通过del删除

>>> tup1
(1, 1, 1)
>>> del tup1
>>> tup1
Traceback (most recent call last):
  File "<pyshell#29>", line 1, in <module>
    tup1
NameError: name 'tup1' is not defined

删除后再访问就会报错

参考博文:
参考1
参考2
参考3

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值