Python中核心数据类型结构分类
- 序列类型:字符串、列表、元组
- 泛映射类型:字典
- 集合:set()
列表
1.列表的特性:
- 列表内的元素是可变的
- 列表的元素可以是Python的任何数据类型的数据和对象
- 列表的元素可以出现多次
2.创建列表
li=[] #空列表
li=['a','b']
list(li) #list()可以将其他类型转化为列表类型
string.split() #split() 将字符串类型转换为列表类型
列表的基本操作
3.1取值
li=['a','b',['c','d']]
li[0] #结果'a'
li[2][1] #结果'd' 因为是嵌套列表,所以这样输出
3.2切片
li=['a','b',['c','d']]
li[0:2] #输出['a','b'] 切片之后的数据的类型还是列表类型
3.3 方法
len(li) #求出列表长度 适用于所有的序列类型
len(li) #3
'a' in #判断元素是否在列表内,注意a是字符串,要加上引号,否则会当作变量查找
print( 'a' in li ) #True
li.append() #向列表最后位置添加元素
li.appedn('a') #li=['a','b',['c','d'],'a']
li.insert(index,str) #向列表指定位置添加元素
li.insert(2,'a') #li=['a','b','a',['c','d']]
extend() #将另一个序列类型原封不动的添加到列表内
l1=[1,2,3]
li.extend(l1) #li=['a','b',['c','d'],1,2,3]
remove() #根据指定元素移除列表内的元素,如果发现多个,只会移除第一个
li.remove('a') #li=['b',['c','d']]
pop() #默认删除列表最后一个位置,并且有返回值,与remove的不同之处
li.pop() #li=['a','b']
pop(index) #移除索引对应的元素
li.pop(1) #li=['a',['c','d']]
''.join(list) #把列表中的元素拼接起来,返回的是字符串类型
''.join(li) #这样会报错,因为join()拼接的只能是字符号,并且嵌套的也不不可以拼接,可以这样操作
li.pop()
''.join(li) #返回的是'ab'
'-'.join(li) #已指定字符串进行拼接,输出的是'a-b'
li.index() #返回指定元素的索引位置
li.index('a') #返回0
li.count() #统计值出现的次数
li.count('a') #1
li.sort() #对列表进行排序,只支持全字符或者全数字,并且会改变值的本身
li=[1,3,2]
li.sort() #li=[1,2,3]
li.sort(reverse=True) #对排序进行反转
sorted(li) #这是一个Python的内置函数,所以要这样使用
参数可以是任意数据类型的数据,但是类型必须一样,原列表不会发生改变
引用赋值
1.问题
a=['1','2','3','4','5']
b=a
print(a is b) #两个列表指向同一个对象,id也完全一样
修改b[0]=3
会导致a[0]也会等于3
这样在生产中,会出现问题
2.初步解决
使用以下几种方法都可以将一个列表赋值给一个新的对象
一. 列表的内置函数list.copy()
二.序列类型函数list(li)
三列表切片.
这三种方法都是开辟一个新的内存空间给新的列表,各自之间的id值都会不一样
深浅拷贝
li1=['name',['phone',1000]]
li2=list(li1)
li3=li1.copy()
这三个列表的id值各不相同
但是id(li1[1]),id(li2[1]),li3[li3[1]]的三个id都一样,改变任意一个的值,三个都会改变,指向同一个内存
元组
1 元组特性
- 元组和列表一样,也是序列类型
- 唯一不同的是,元组是相对不可变的
- 相对不可变,可变的是元组内元素的内容,不可变的是元组内元素的内存空间
2创建元组
tu=() #创建空元组
tu=(3) #这样创建的并不是元组,只是一个int类型数字
tu=(3,) #这样的话才是元组
创建非空元素的元组使用逗号,而不是括号
tuple() #将其他序列类型的数据转换为元组
3 使用元组的理由
给我一个理由
- 占用内存空间小
- 元组内的值不会被意外的修改
- 可作为字典的键
- 函数的参数是以元组形式传递的
- 命名元组有时候可以代替类的对象(面向对象的时候用到)
网友评论