在Python中,字符串属于不可变对象,不支持原地修改,如果需要修改其中的值,只能创建新的字符串对象。但是,经常我们确实需要原地修改字符串,可以使用io.StringIO对象或array模块
import io
s = 'hello world'
ios = io.StringIO(s)
print(ios.getvalue()) #获取值
ios.seek(6) #移动光标到第六个字符
ios.write('CHINA') #从第六个字符开始写入
print(ios.getvalue()) # hello CHINA
#通过io模块,实现字符串的修改,并没有重新创建
运算符补充
a=7
print(3<a<10) #True
序列是一种数据存储方式,用来存储一系列的数据。
常用的序列结构包括:字符串、列表、元组、字典、集合
列表 a = [10,20,30,40]
内存中先创建10,20,30,40 四个对象,然后把四个对象的地址依次存到列表中
从图示中,我们可以看到序列中存储的是整数对象的地址,不是整数对象的值
将任何可迭代的数据转化成列表
print(list('我学python'))
# [ '我', '学', 'p', 'y', 't', 'h', 'o', 'n']
print(list(range(1,10)))
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list(range(10,1,-1)))
# [10, 9, 8, 7, 6, 5, 4, 3, 2]
# range 默认从小到大,从大到小,步长为负
a = [x**2 for x in range(10)]
print(a)
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
b = [x**2 for x in range(10) if x%2 == 0]
print(b)
# [0, 4, 16, 36, 64]
append, insert, extend 对原列表进行操作
但使用+,*号进行拼接,会创建一个新的列表对象,如下所示,拼接前后,变量a所指向的内存地址发生了变化
a = [10,20]
print(id(a)) #3116689118208
a = a + [30]
print(a) #[10, 20, 30]
print(id(a)) #3116689118656
del, pop, remove 对原列表进行操作
index()可以获得指定元素首次出现的索引位置,还可以指定搜索的范围
a = [3,3,2,4,3]
print(a.index(3,1,4)) #1
指定元素在列表中出现的次数
a = [12,3,2,4,3]
print(a.count(3)) #2
随机排序
import random
a = [1,3,8,4,6]
print(id(a)) #2941071840064
random.shuffle(a)
print(a) #[6, 1, 4, 8, 3]
print(id(a)) #2941071840064
a = [1,3,8,4,6]
print(id(a)) #1788263846848
a = sorted(a)
print(a)
print(id(a)) #1788263847616
内置方法 max, min, sum
元组属于不可变序列,不可修改元组中的元素。
a= 10,20,30 #中括号可不写
print(type(a)) #
b = 40, #元组中只有一个原素,逗号要跟上
print(type(b)) #
修改元组中的元素。
a= 10,20,30 #中括号可不写
print(type(a)) #
b = 40, #元组中只有一个原素,逗号要跟上
print(type(b)) #