python数据结构(data_structures)
程序员文章站
2024-03-17 23:10:04
...
数据结构 存储相关数据的集合
数据类型
数据:
整数型
浮点型
字符型
布尔型
数据结构:
序列 list
元组 tuple
字典 dist
集合 set
list
可变对象
索引,切片
l=[1,'hello',True,1.2]
print(l)
print(len(l))
print(l[1],l[0])
#切片
print(l[0:2]) #索引,0到1,左闭右开
print(l[1:]) #索引,1到最后一个
print(l[-1])
print(l[-2:-3])
print(l[::2]) #切片,步长为2
print(l[::-1]) #倒叙,打印list
[1, 'hello', True, 1.2]
4
hello 1
[1, 'hello']
['hello', True, 1.2]
1.2
[]
[1, True]
[1.2, True, 'hello', 1]
#增加元素
'''append()尾端加入
insert()指定位置加入'''
s=[1,'hello',True,1.2]
print(s)
s.append('python')
print(s)
s.insert(0,'love')
print(s)
[1, 'hello', True, 1.2]
[1, 'hello', True, 1.2, 'python']
['love', 1, 'hello', True, 1.2, 'python']
#删除元素
'''pop()尾端弹出,也可弹出指定位置元素
remove()删除指定元素值
clear()清空列表
del删除列表对象'''
i=[1,'hello',True,1.2]
i.pop()
print(i)
i.pop(2) #弹出索引为2的元素
print(i)
i.remove('hello')
print(i)
i.clear()
print(i)
del i
print(i) #NameError: name 'i' is not defined
[1, 'hello', True]
[1, 'hello']
[1]
[]
相关使用
'''copy()复制,并生成新的对象
count()计数
index()返回索引值
reverse()元素颠倒
sort()方法排序,默认升序'''
t1=['a','a','b','c','d','e','f','g']
t2=t1.copy() # 生成新的对象
print(t2)
print(t2.count('a')) #’a'出现次数
print(t2.index('b')) #返回首次出现时的索引值
t2.reverse() #颠倒
print(t2)
t2.sort() #升序,默认
print(t2)
print(t1) #值不变
['a', 'a', 'b', 'c', 'd', 'e', 'f', 'g']
2
2
['g', 'f', 'e', 'd', 'c', 'b', 'a', 'a']
['a', 'a', 'b', 'c', 'd', 'e', 'f', 'g']
['a', 'a', 'b', 'c', 'd', 'e', 'f', 'g']
元组
不可变对象,没有增,删,改权限
可以使用索引和切片等功能
保证数据安全
a=(1,'python',3.4)
u=a.copy()
#AttributeError: 'tuple' object has no attribute 'copy'
字典
可变对象,key必为不可变对象(字符串,数字),key必互不相同
name_age={'li':23,'liu':46,'wang':15}
print(name_age)
print(name_age['wang'])
name_age['wang']=10
print(name_age)
print(name_age.pop('wang'))
print('as' in name_age) #判断key是否存在
print(name_age.get('li'))#key不存在,返回none,
{'li': 23, 'liu': 46, 'wang': 15}
15
{'li': 23, 'liu': 46, 'wang': 10}
10
False
23
list比较,dict有以下几个特点:
查找和插入的速度极快,不会随着key的增加而变慢;
需要占用大量的内存,内存浪费多。
而list相反:
查找和插入的时间随着元素的增加而增加;
占用空间小,浪费内存很少。
所以,dict是用空间来换取时间的一种方法。
dict可以用在需要高速查找的很多地方,在Python代码中几乎无处不在,正确使用dict非常重要,需要牢记的第一条就是dict的key必须是不可变对象
集合
可变对象
无序不重复元素集合,主要功能关系测试和消除重复元素
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
v={'apple', 'banana', 'pear', 'orange'}
print('apple' in basket) #检测元素
print(basket) #自动删除元素
print(basket is v) #false,可变对象
print(len(basket)) #4
True
{'apple', 'banana', 'pear', 'orange'}
False
4
a=set('afdsfdsa')
print(a)
c=[1,2,3,4]
b=set(c)
print(b)
数组,字符串可以通过set()转化为集合
{'d', 'f', 's', 'a'}
{1, 2, 3, 4}
a=set('afdsfdsa')
b=set('aasdlkhkoioij')
print(a)
print(a-b) #属于a不属于b
print(a&b) #且
print(a|b) #或
{'d', 'f', 's', 'a'}
{'f'}
{'a', 's', 'd'}
{'k', 'i', 'f', 'a', 'o', 's', 'l', 'h', 'j', 'd'}
True
上一篇: Lua学习记录 — (2) 运算符
下一篇: LUA程序设计第4版第24章练习答案