Python学习第二十七天—序列(上)

[复制链接]
15271953841 发表于 2024-2-20 06:04:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
本帖最后由 15271953841 于 2024-2-21 06:35 编辑

Python 3.12.1 (tags/v3.12.1:2305ca5, Dec  7 2023, 22:03:25) [MSC v.1937 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
列表、元组和字符串似乎有很多共同点:
1.        都可以通过索引获取每一个元素
2.        第一个元素的索引值都是0
3.        都可以通过切片的方法获取一个范围内的元素的集合
4.        都有很多共同的运算符
列表、元组和字符串被Python统称为序列。
根据是否能被修改这一特征,分为可变序列和不可变序列。
列表是可变序列,而元组和字符串是不可变序列。
这节课学习能够作用于序列的一些运算符和函数。
首先学“+”和“*”,加法表示两个序列拼接,乘法表示将两序列重复(就是拷贝)

[1,2,3,]+[4,5,6,]
[1, 2, 3, 4, 5, 6]
(1,2,3,)+(4,5,6,)
(1, 2, 3, 4, 5, 6)
"123"+"456"
'123456'
[1,2,3]*3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
(1,2,3)*3
(1, 2, 3, 1, 2, 3, 1, 2, 3)
"123"*3
'123123123'
那么对于增量赋值也是可以的,只不过这里有一个坑,要注意:
s=[1,2,3]
id(s)
2451102186752         (内存地址)
s *= 2
s
[1, 2, 3, 1, 2, 3]
id(s)
2451102186752       (与原来的s得到的id(s)值是一样的)
在Python中,每一个对象都有三个属性,第一个是唯一标志,第二和第三是类型和值。唯一标志是随着对象创建时就有的,是不可以被修改的,也不会有重复的值,只要这个对象一天在这个内存中,它这个值就不会有重复的,可以把唯一标志理解成对象的身份证,那id这个BIF这个函数的作用是返回一个代表指定对象的位于标准的整数值。

如果对象是一个不可变序列:
t=(1,2,3)
id(t)
2451102328768
t *= 2
t
(1, 2, 3, 1, 2, 3)
id(t)           (虽然变量名还是叫t,但是早已物是人非,被狸猫换太子了)
2451096714688

is 和 is not 判断的是非问题
用于检测对象的id值是否相等,从而判断是否是同一个对象,因此,它们也称之为同一性运算符。

x="FishC"
y="FishC"
x is y
True
x=[1,2,3]
y=[1,2,3]             (列表是可变的,所以列表内容虽然一样,但Python为它们开辟了两个不同的位置存放)
x is y
False

in 和 not in 判断是包含问题。
"襄" in "我爱襄阳"
True
"ang" in "我爱xiangyang"
True
"ia" not in "我爱xiangyang"
False

del 用于删除一个或多个指定的对象。
x="FishC"
y=[1,2,3]
del x,y
x
Traceback (most recent call last):           (报错,说明x整个对象都被删除了)
  File "<pyshell#28>", line 1, in <module>
    x
NameError: name 'x' is not defined
y
Traceback (most recent call last):         (报错,说明y整个对象都被删除了,就像从来没有出现过)
  File "<pyshell#29>", line 1, in <module>
    y
NameError: name 'y' is not defined
还可以删除可变序列中的指定元素。
x=[1,2,3,4,5]
del x[1:4]
x
[1, 5]
y=[1,2,3,4,5]
y[1:4]=[]
y
[1, 5]
z=[1,2,3,4,5]
del z[::2]
z
[2, 4]
zz=[1,2,3,4,5]
zz[::2]=[]                    (切片方法不行)
Traceback (most recent call last):
  File "<pyshell#40>", line 1, in <module>
    zz[::2]=[]
ValueError: attempt to assign sequence of size 0 to extended slice of size 3
x=[1,2,3,4,5]
x.clear()
x
[]
x=[1,2,3,4,5]
del x[:]            (不能用del x,因为del x直接把x整个对象就删除了)
x
[]

关注公众号

相关侵权、举报、投诉及建议等,请发 E-mail:admin@discuz.vip

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.|鄂ICP备13007585号-4

在本发帖
关注公众号
QQ客服返回顶部