1. 列表
List是一种有序的集合,可以随时添加和删除其中的元素,里面的元素可以是不同的数据类型。
a. 标志
[ ]
b. 基本操作(创建,append( ),pop( ) ,del( ), 拷贝)
#创建
classmates=['Michael','Bob','Tracy']
print('classmates=',classmates)
#list长度
print('classmates的长度:',len(classmates))
#直接获取list最后一个元素、倒数第二个、倒数第三个
print('classmates中的最后一个元素:',classmates[-1])
print('classmates中的倒数第二个元素:',classmates[-2])
print('classmates中的倒数第三个元素:',classmates[-3])
#append()可以往list中追加元素到末尾
#错误 显示 none。append使用后赋值给新变量,classmates_new=classmates.append('Adam')
classmates.append('Adam')
print('在列表结尾加Adam:',classmates)
#insert()可以把元素插入到指定位置
#错误 显示 none。print('在索引号为1的位置加入Jack:',classmates.insert(1,'Jack'))
classmates.insert(1,'Jack')
print('在索引号为1的位置加入Jack:',classmates)
#pop()删除list末尾的元素
classmates.pop()
print('删除列表中最后一个元素:',classmates)
#pop(i)删除指定位置的元素,根据索引删除,返回删除的元素
a=classmates.pop(2)
print('删除列表中第[2]位的元素:',classmates)
print('删除的元素是:',a)
#del()用于删除列表中的元素,根据索引删除,没有返回值;删除索引范围内的元素或整个列表元素
classmates_test=['Michael','Bob','Tracy','Jack','Adam']
del classmates_test[1]
print('删除新列表第[1]位元素:',classmates_test)
del classmates_test[1:3]
print('删除新列表第[1-3]位元素:',classmates_test)
#remove()用于删除列表中某一确定元素
classmates_test.remove('Michael')
print('删除新列表中的Michael:',classmates_test)
del classmates_test #删除classmate_test列表
#拷贝 浅/深拷贝在列表对象含子列表时有区别
import copy
origin=['1','2','3',['4','5']]
print('原始列表:',origin)
#错误 显示origin而不显示列表 cop1=copy.copy('origin') #浅拷贝
cop1=copy.copy(origin) #浅拷贝
cop2=copy.deepcopy(origin) #深拷贝
print('浅拷贝cop1:',cop1)
print('深拷贝cop2:',cop2)
origin.append('6') #不改变子列表
print('浅拷贝cop1:',cop1)
print('深拷贝cop2:',cop2)
origin[3].append('a') #改变子列表
print('浅拷贝cop1:',cop1)
print('深拷贝cop2:',cop2)
浅拷贝和深拷贝的区别:https://iaman.actor/blog/2016/04/17/copy-in-python
c. 列表相关方法
#列表的其他操作
name=['Michael','Bob','Tracy','Baby']
# 增:
name.insert(2,'wangwei') #列表name的索引为2的位置添加一个元素 wangwei
name.append('Tom') #列表name的末尾,添加一个元素“Tom”
name.append([1,2,3,4]) #列表name的末尾,添加一个列表
name.extend('abcde') #列表name的末尾,迭代的增加多个元素
print(name)
#迭代着增加:就是数据类型的最小组成单位作为列表的一个元素进行增加
# 删:
name.pop() #按照下标进行删除,默认删除最后一个(有返回值)
name.remove('c') #remove()直接在字符串中查找括号内的元素,并删除
name.clear() #清空列表,使列表变成一个空的
print(name)
del name #直接删除内存文件,导致name这个列表不存在
# 改:
name=['Michael','Bob','Tracy','Baby']
name[0]='x' #通过对索引位置重新赋值,达到更改元素内容的目的
b=name[0:2] #= ['1' , '2', '3'] #更改可切片
print(b)
#用冒号隔开两个索引值,左边是开始位置,右边是结束位置(不包含该元素)。
#切片也称为拷贝,从原来列表拷贝部分元素,但对原来的列表无影响。
name[0:2] = ['1' , '2', '3'] #更改可切片
# 查:
name = [1,2,3,4,5,6]
print(name[0])#通过下表进行查找元素
name.index(2)#返回列表中该元素第一次出现的索引位置
# 排序和反转:
name.sort()#正向排序,按正确顺序排列
print(name)
name.sort(reverse = True)#反向排序
print(name)
name.reverse() #反转
print(name)
# 列表操作函数:
name = [1,2,3,1,23,1,2]
name.count(1) #计数,通过count统计列表name中,元素 1 出现的次数
len(name) #列表元素个数
max(name) #返回列表元素最大值
min(name)#返回列表元素最小值
seq=(1,2,3)
list(seq)#将元组seq强制转换成列表
for index,value in enumerate(name):#打印元素对应的下标,对一个列表,既要遍历索引又要遍历元素
print(index,value)
for index,value in enumerate(name,2):#从指定位置开始输出索引位置与元素
print(index,value)
list中三种删除的方法:https://blog.csdn.net/weixin_42814873/article/details/83377431
2. 元组
a. 标志
()
b. 基本操作(创建及不可变性)
#元组的创建
classmates = ('Michael', 'Bob', 'Tracy')
#空元组
a=()
print(classmates)
print(a)
len(),max(),min().tuple()
tuple不可变,它也没有append(),insert()这样的方法。其他获取元素的方法和list是一样的,你可以正常地使用classmates[0]
,classmates[-1]
,但不能赋值成另外的元素。
因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。
3. string字符串
a. 定义及基本操作(+,*,读取方式)
所有的标准的序列操作(索引、切片、乘法、成员资格检查、长度、最小值和最大值)都适用于字符串,但别忘了字符串是不可变的,因此所有的元素赋值和切片赋值都是非法的。
a = 'abc'
b = 'edf'
print(a+b)
print(a*3)
print(a[1])
print(a[0:1])
b. 字符串相关方法
#find 在字符串中查找子串。如果找到,返回子串的第一个字符的索引,否则返回-1
title = 'Monty Python Filying Circus'
title.find('Monty')
title.find('is')
#join 连接序列中的元素
seq=['1','2','3'] #[1,2,3]为数字列表,['1','2','3']为字符串列表
p='+'
p.join(seq)
#lower 返回字符串的小写字母版
name='Gumby'
names=['gumby','smith','jones']
if name.lower() in names:
print ('Found it!')
#replace 返回某字符串的所有匹配项均被替换之后的得到的字符串
str='This is a test'.replace('is','eez')
print(str)
#split 将字符串分割成序列
env='1+2+3'.split('+')
print(env)
#strip 返回去除两侧(不含内侧)空格的字符串
' internal is good '.strip()
'** internal * is good !!'.strip('*!') #删除指定字符 其设为参数
#translate 可以替换
4. 字符串格式化问题
(1) 简单转换 (待补充)
(2)字段宽度和精度(待补充)