数据结构
简单的来说,数据结构(data structure)是计算机中存储、组织数据的方式。比如我们之前的课程中使用过的列表就是一种数据结构,在这里我们还会深入学习它。
1.列表
增加
append() 列表末位增加元素
insert(a,b) 在索引a处增加元素b
count(a) 元素a在列表中出现的次数
remove(a) 移除列表中的a 多个只会删除1个
reverse() 反转列表
a.sort() 排序 会改变列表a
del a[i] 删除列表a i位置的元素
a.extend(b) 将b列表中的元素增加到a列表中
>>> u=['a','b','c','d'] >>> u.append('e') >>> u ['a', 'b', 'c', 'd', 'e'] >>> u.insert(1,'a-b') >>> u ['a', 'a-b', 'b', 'c', 'd', 'e'] >>> u.insert(1,'a-b') >>> u ['a', 'a-b', 'a-b', 'b', 'c', 'd', 'e'] >>> u.count('a-b') 2 >>> u.remove('a-b') >>> u ['a', 'a-b', 'b', 'c', 'd', 'e'] >>> u.append(1) >>> u ['a', 'a-b', 'b', 'c', 'd', 'e', 1] >>> del u[1] >>> u ['a', 'b', 'c', 'd', 'e', 1]
pop() 获取出最好一个元素 pop(i) 获取处第i个元素 都会改变原列表
pop() 栈 先进后出 pop(0) 队列 先进先出
>>> u ['a', 'b', 'c', 'd', 'e', 'g'] >>> u.pop() 'g' >>> u ['a', 'b', 'c', 'd', 'e'] >>> u.pop(2) 'c' >>> u ['a', 'b', 'd', 'e']
列表创建
>>> squares = [x**2 for x in range(10)] >>> squares [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] >>> [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y] [(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)] >>> >>> [(x, y) for x in [1,2,3] for y in [3,1,4] ] [(1, 3), (1, 1), (1, 4), (2, 3), (2, 1), (2, 4), (3, 3), (3, 1), (3, 4)] >>>
2 . 元组
Python的元组与列表类似,不同之处在于元组的元素不能修改。
元组使用小括号,列表使用方括号。
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
要创建只含有一个元素的元组,在值后面跟一个逗号。
>>> u =('a','b','c','d') >>> u ('a', 'b', 'c', 'd') >>> del u[1] #不能删除元组元素 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object doesn't support item deletion >>> del u #可以删除元组 >>> u Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'u' is not defined >>> x = (3,4) >>> y = (1,2) >>> x+y (3, 4, 1, 2) >>> z=(5) #要创建只含有一个元素的元组,在值后面跟一个逗号 >>> x+y+z Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: can only concatenate tuple (not "int") to tuple >>> z=(5,) >>> x+y+z (3, 4, 1, 2, 5)
元组更列表一样可以切割 :和:: (步)
4. 集合
集合是一个无序不重复元素的集。基本功能包括关系测试和消除重复元素。集合对象还支持 union(联合),intersection(交),difference(差)和 symmetric difference(对称差集)等数学运算。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典
set 刮号后时一个值 set(akd)={'a','k','d'} 多元素字符串 set(('ab','cd','ef'))={'ab','cd','ef'}
- s.update( {"字符串"} ) 将字符串添加到集合中,有重复的会忽略。
- s.update( "字符串" ) 将字符串拆分单个字符后,然后再一个个添加到集合中,有重复的会忽略。
>>>basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket) # 这里演示的是去重功能
{'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket # 快速判断元素是否在集合内
True
>>> 'crabgrass' in basket
False
>>> # 下面展示两个集合间的运算.
...
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a
{'a', 'r', 'b', 'c', 'd'}
>>> a - b # 集合a中包含元素
{'r', 'd', 'b'}
>>> a | b # 集合a或b中包含的所有元素
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b # 集合a和b中都包含了的元素
{'a', 'c'}
>>> a ^ b # 不同时包含于a和b的元素
{'r', 'd', 'b', 'm', 'z', 'l'}
s.add( x )
将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。
>>> s={1,2,3,4}
>>> s.add(5)
>>> s
{1, 2, 3, 4, 5}
>>> s.add(3)
>>> s
{1, 2, 3, 4, 5}
s.remove( x )
移除 如果不存在,报错
s.discard(x) 移除,不存在不会报错
s.pop() 随机删除
6.字典
字典是是无序的键值对(key:value)集合,同一个字典内的键必须是互不相同的。一对大括号 {} 创建一个空字典。初始化字典时,在大括号内放置一组逗号分隔的键:值对,这也是字典输出的方式。我们使用键来检索存储在字典中的数据。
>>> data = {'kushal':'Fedora', 'kart_':'Debian', 'Jace':'Mac'}
>>> data
{'kushal': 'Fedora', 'Jace': 'Mac', 'kart_': 'Debian'}
>>> data['kart_']
'Debian'
增加
data['zw']='123Lo'
>>> a {1: 'jj', 2: 'kk', 3: 'ii', 4: 'oo'} >>> a[5]='mm' >>> a {1: 'jj', 2: 'kk', 3: 'ii', 4: 'oo', 5: 'mm'} >>> remove a[1] File "<stdin>", line 1 remove a[1] ^ SyntaxError: invalid syntax >>> del a[1] >>> a {2: 'kk', 3: 'ii', 4: 'oo', 5: 'mm'} >>> 3 in a True >>> 'ii' in a False
遍历一个字典,使用字典的 items() 方法
dict.values() 返回所有的值 dict.keys() 返回所有的键
dic={1:'a',2:'c',3:'r'}
for x,y in dic.items():
print ('键:{},值:{}'.format(x,y))
键:1,值:a
键:2,值:c
键:3,值:r
dict.setdefault(key, default=None)
如果 key 在 字典中,返回对应的值。如果不在字典中,则插入 key 及设置的默认值 default,并返回 default ,default 默认值为 None
dict.get(key, default=None)
Python 字典(Dictionary) get() 函数返回指定键的值,如果值不在字典中返回默认值。
dict.has_key(key) 判断有误这个键
data = {} menshu=("语文","数学","英语") n = int(input("请输入学生数量:")) for i in range(n): name = input("请输入第{}个学生的姓名:".format(i+1)) soild=[] for j in menshu : soild.append( int ( input("请输入{}成绩:".format(j)))) data[name] = soild for x,y in data.items() : tatal = 0 for z in y : tatal = tatal + z print ("{}的总分是:{}".format(x,tatal)) if tatal < 120: print ("未通过") else : print ("通过")
浙公网安备 33010602011771号