Python05 元組,集合與字典的應用

1.元組

元組不支持變量賦值(元組中的列表可以)

y= (1,)  #單獨定義元組的時候需要後面加逗號
print(type(y))
s = ([1,2,3],4)
s[0].append(4)
print(s)

元組的特性

Users = ('root','westos','redhat')
Passwds = ('123','456','789')
#索引,切片
print(Users[-1])
print(Users[::-1])
#
#重複
print(Users * 2)

#連接
print(Users + Passwds)

#成員操作附
print('redhat' in  Users)
print('redhat' not in Users)

#for
for user,index in  enumerate(Users):
    print(user,index)

for user,passwd in zip(Users,Passwds):
    print(user, ':' ,passwd)

#方法
t = (1,1.2,True,'westos')
print(t.count('westos'))  #計數
print(t.index(1))  #下標

# #賦值
s = ('yueyue',23,'boy')
name,age,sex = s
print(name,age,sex)
# #排序
soces = (100,66,55,44)
socesli = list(soces)
socesli.sort()
t = tuple(socesli)
print(t)

求平均分:

soces = (100,66,55,44)
socesli = list(soces)
socesli.sort()
t = tuple(socesli)
# print(t)
#
#去掉最高最低求平均
maxsocre,*middlesocre,minsocre = t
print(maxsocre)
print(minsocre)
print(middlesocre)
print(sum(middlesocre) / len(middlesocre))  #平均分

2.集合

集合(元素不可重複,不支持索引,切片,重複,連接;支持成員操作符)

s = {1,2,2,3,3,5,4}
print(s)
print(type(s))

s1 = ()
print(type(s1))

s2 = set([])
print(type(s2))  #定義空集合

li = [1,2,2,5.5,5,5]
print(list(set(li))) # 集合去重

s = {1,2,3}
for i in s:
    print(i,end='|')

for i,v in enumerate(s):
    print(i,v)

#集合的添加
s = {6,7,8} # 一個一個添加
s.add(4)
print(s)

s.update({7,4,1})
print(s)

#刪除
s.pop()
print(s)
s.remove(6)
print(s)

#交集 並集 差集
s1 = {1,2,3}
s2 = {2,3,4}

#並集
print('並集:',s1 | s2)
print('並集',s1.union(s2))

#交集
print('交集',s1 & s2)
print('交集', s1.intersection(s2))

#差集
print('差集',s2.difference(s1))
print('差集',s2-(s1&s2))

print('差集',s1.difference(s2))
print('差集',s1-(s1&s2))

s1 = {1,2,3}
s2 = {2,3,4}
#對等差分: 並集-交集
print('對等差分',s1.symmetric_difference(s2))
print('對等差分',s1^s2)

練習:

"""
明明想在學校中請一些同學一起做一項問卷調查,爲了實驗的客觀性
他先用計算機生成了N個1~1000之間的隨機整數(N<=1000),N是用戶輸入的,
對於
其中重複的數字,只保留一個,把其餘相同的數字去掉,不同的數對應着不>同的學生的學號,然後再把這些
數從小到大排序,按照排好的順序去找同學做調查,請你協助明明完成“去重
”與排序工作
"""

import random
s =set([])
for i in range(int(input('N:'))):
    num = random.randint(1,1000)
    s.add(num)
print(len(s))
print(sorted(s))

3.字典

users = ['user1','user2']
passwds = ['123','456']

a = dict(zip(users,passwds))
print(a)
print(type(a))

student = {
    'leilei':{
        'id':'123',
        'age':'18',
        'sex':'boy'
    },

    'yueyue':{
        'id':'234',
        'age':'23',
        'sex':'boy',
    }
}
print(student['yueyue']['id'])

字典:不支持索引,切片  支持成員操作符,for

d = {
    '1':'a',
    '2':'b'
}

print('1' in d)  #成員操作符
print('1' not in d)

for key in d:
    print(key,d[key])

#字典的增加
services = {
    'http':80,
    'ftp':21,
    'ssh':22
}
services['samba'] = 23
print(services)
#
services_update = {
    'https':'443',
    'firewalld':'8080',
    'http':'8080'   #如果存在,就覆蓋
}
services.update(services_update)
print(services)
services.update(orcle=9090,nfs=23)
print(services)
services.setdefault('http',44)  #如果key存在就不生效
print(services)
services.setdefault('idea',44)
print(services)

 

#刪除
del services['http']
print(services)
#item =services.pop('https') #不存在報錯
item =services.pop('http')
print(item)
print(services)

services.clear() # 清空
print(services)

services = {
    'http':80,
    'ftp':21,
    'ssh':22
}
print(services.keys())
print(services.values())
print(services.items())
print(services.get('https')) # 不存在輸出none

for k,v in services.items():
    print('key:',k, 'value:',v)

練習:

"""
 # 數字重複統計:
    1). 隨機生成1000個整數;
    2). 數字的範圍[20, 100],
    3). 升序輸出所有不同的數字及其每個數字重複的次數;
"""

import random

num1 = []
for item in range(1000):
    num1.append(random.randint(20,1000))
sorted_nums = sorted(num1)
num_dict = {}

for num in sorted_nums:
    if num in num_dict:
        num_dict[num] += 1
    else:
        num_dict[num] =1
print(num_dict)
print(len(num_dict))

 """
棧的工作原理
 入棧 append
 出棧 pop
 棧頂元素 
 棧的長度 len
 棧是否爲空 len == 0 
"""

stack = []
info= ("""
    1.入棧
    2.出棧
    3.棧頂元素
    4.棧的長度
    5.棧是否爲空
    6.退出
""")

while  True:
    print(info)
    choice = input('選擇:')
    if choice == '1':
        item = input('入棧元素:')
        stack.append(item)
        print('%s 入棧成功' % item)

    elif choice == '2':
        if not stack:
            print('棧爲空,不能出棧')
        else:
            item = stack.pop()
            print('%s 元素出棧成功' %item)
    elif choice == '3':
        if len(stack) == 0:
            print('棧爲空')
        else:
            print('棧頂元素爲%s' %(stack[-1]))
    elif choice == '4':
        print('棧的長度爲%s' % (len(stack)))
    elif choice == '5':
        if len(stack) == 0:
            print('棧爲空')
        else:
            print('棧不爲空')
    elif choice == '6':
        print('退出')
        break
    else:
        print('請輸入正確選擇')

入棧

棧頂元素

出棧

棧的長度

 棧是否爲空退出

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章