欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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