数据结构

简单的来说,数据结构(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 ("通过")

 





posted @ 2018-08-06 17:01  myself_think  阅读(172)  评论(0)    收藏  举报