Python基础笔记(三)原对象修改字符串、序列、列表、元组等

1.原对象修改字符串

Python中的字符串属于不可变对象,如果修改,会创建新的对象,可想而知,再需要频繁修改字符串时会产生大量的对象,占用较多内存;

为了实现原对象修改字符串,可以使用io.StringIO对象:

import io
str = "hello world"
str1=io.StringIO(str)
print(str1.getvalue())
print(id(str1.getvalue()))
str1.seek(5)
str1.write('#')
print(str1.getvalue())
print(id(str1.getvalue()))

可以看到,字符串已被修改,但引用的对象仍是同一对象。

2.Python中的序列

序列是一种数据存储方式,用来存储一系列的数据。在内存中,序列就是一块用来存放 多个值的连续的内存空间;

序列中存储的是整数对象的地址,而不是整数对象的值。python 中常用的序列结构有: 字符串、列表、元组、字典、集合。

3.列表

列表中的元素可以各不相同,可以是任意类型,列表大小可变,可随时增加或减少元素。

列表的创建:

#基本语法创建
a = [1,2,3,4,5]
print(a)

#list函数与range合并创建
b = list(range(10))
print(b)

b = list(range(1,11,2))
print(b)

c = "12345"
d = list(c)
print(d)

#推导式创建
e = [x for x in range(20) if x%3==0]
print(e)

列表添加元素:append方法,'+'运算符,extend方法,insert方法,'*'运算符,其中'+'运算符和'*'运算符都会产生新的列表对象

a = [1,2,3]
print(a)
print(id(a))

a.append(4)
print(a)
print(id(a))

a = a + [5,6]
print(a)
print(id(a))

a.extend([7,8])
print(a)
print(id(a))

a.insert(3, 'x')
print(a)
print(id(a))

a = a*3
print(a)
print(id(a))

列表的切片操作:

切片 slice 操作可以让我们快速提取子列表或修改。标准格式为:

[起始偏移量 start:终止偏移量 end[:步长 step]]

注:当步长省略时顺便可以省略第二个冒号

切片操作时,起始偏移量和终止偏移量不在[0,字符串长度-1]这个范围,也不会报错。起始

偏移量小于 0 则会当做 0,终止偏移量大于“长度-1”会被当成”长度-1”。

a = [0,1,2,3,4,5,6,7,8,9]
print(a)
print(id(a))

#可以看到切片产生新的对象了
b = a[:]
print(b)
print(id(b))

b = a[1:7:2]
print(b)
print(id(b))

#负数表示倒数,-5表示倒数第5个
b = a[-5::2]
print(b)
print(id(b))

4.元组

Python中的元组属于不可变序列,因此不能增删元素

元组的创建类似于列表,使用""创建,或使用tuple()创建,tuple的输入是一个可迭代的对象;

元组的访问、切片等与列表相同,只不过返回的是元组;

元组的排序中不能使用列表中的list.sorted这样的原地修改对象的方法,只能使用如sorted这样的创建新对象的方法;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值