python容器类型及使用

① List类型的使用(排序算法及查找算法)
② Dict类型及使用
③ 元组类型及使用
④ Set类型及使用

一、List类型的使用

基本数据类型按功能分类

(1)标准数据类型

类型 描述
None Python中的空值
int/float 数字类型
bool True或者False
str 字符串

(2)容器数据类型

类型 描述
list 列表类型
tuple 元组类型
dict 字典类型
set 集合

二、排序算法

1、冒泡排序
从小到大:相邻两个元素进行比较大小,将大数往后放,
一趟排序求出最大数,放在最后位置。
重复以上操作,直到数据从小到大排列。

 list=[1,3,5,7,9,2,4,6,8]
 long=len(list)
 for xiabiao in range(long):
    for x in range(long-xiabiao-1):
        if list[x]<list[x+1]:
            list[x],list[x+1]=list[x+1],list[x]
 print(list)

2、选择排序
从小到大:选择第一个元素与之后的元素比较,第一趟
求出最小数,放在第一个位置。
依次选择其它元素重复以上操作,直到数据从小到大排
列。

list=[3,7,5,1,9,2,4,6,8]
long=len(list)
for x in range(long):
    mina=x
    for y in range(mina+1,long):
        if list[mina]>list[y]:
            mina=y
    list[x],list[mina]=list[mina],list[x]
print(list)

三、查找算法

1、顺序查找
输入要查找的数据,从list第一个元素顺序往下查找,
直到list最后一个元素,当查找到输出位置,若未查找到
显示“查无此数”

lis = [1, 5, 8, 123, 22, 54, 7, 99, 300, 222]
for i in range(len(lis)):
        if lis[i]==123:
            print(i)

2、二分查找
二分查找也称折半查找(Binary Search),它是一种效率较高的查找
方法。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与
查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将
表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则
进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找
到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成
功。

lis=[1,2,3,4,5,6]
min = 0  # 最小的下标
max = len(lis) - 1  # 最大的下标
i = 0
num=int(input('输入数'))
while True:
        i += 1
        mid = (max + min) // 2  # 中间的下标每次向下取整
        if num >lis[mid]:
           min = mid + 1  # 小于需要的猜的数,则将最小下标变为中间的,又因为中间的已经猜过,所以要加1
        elif num == lis[mid]:
            print("找到数据")
            print("一共查找%d次" % i)
            break
        else:
            max = mid - 1  # 大于需要的猜的数,则将最大下标变为中间的,又因为中间的已经猜过,所以要减1

四、字典

Python的字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值(key=>value)对用冒号 : 分割。每个对之间用逗号 ,
分割。整个字典包括在花括号 { } 中 。
变量名 = {key1 : value1, key2 : value2 }

键必须是唯一的,但值则不必。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
示例:

dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
dict1 = { 'abc': 456 };
dict2 = { 'abc': 123, 98.6: 37 };

1、创建字典

dict1 = {} #创建空字典
dict1['age']=20
person = {'name':'qiwsir','language':'python'} #赋值式的添加或者创建
person['name2'] = 'qiwsier2' 
print (person) #打印后发现是随机顺序
tup1 = (['name1','baidu'],['name2','google']) #通过dict()把元组转为字典
website = dict(tup1)
ad = dict(name="qiwsir",age =22) #或者使用key=value的方法
web = {}.fromkeys(("first","second"),"facebook") #使用fromkeys()

2、访问字典

dict数据类型是以键值对的形式存放数据,所以,只要知道键,就能得到值。
本质上是一种映射关系。

person = {'name':'qiwsir','language':'python'}
print (" person ['name']: ", person ['name’])
print (" person ['language']: ", person ['language’])

因为是键与值的映射,所以在读值的时候可以不考虑排序问题,比如说
列表,python需要从头开始读。
因为这个特性,字典读取的效率比较高,数据规模越大,越明显。所以,
mongdb这种非关系型数据库在大的数据方面比较流行。

3、修改字典

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
dict['Age'] = 8
dict['School'] = "DPS School"
print("dict['Age']: ", dict['Age’])
print( "dict['School']: ", dict['School’])

4、删除字典元素

#向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
del dict['Name’] # 删除键是'Name'的条目
dict.clear() # 清空词典所有条目
del dict # 删除词典
print("dict['Age']: ", dict['Age’])
print("dict['School']: ", dict['School’])
#打印字典不存在的key或者删除清空后的字典都会报错

五、 元组tuple

1、概念

Python的元组与列表类似,不同之处在于元组的元素不能修改

变量名 =1,'a',变量等)
()内可以是 number、string、bool

2、tuple示例

tup1 = ('窝窝头'
, 'wotou', 1997, 2000);
tup2 = (1, 2, 3, 4, 5 );
tup3 = "a", "b", "c", "d";
str1='hello'
tup4 = (True,'a',666,str1)
tup5 = 233,

3、对 tuple 的操作

#– 创建
• tup1 = ('窝窝头', 'wotou', 1997, 2000) #直接创建
• tup2 = "a", "b", "c", "d" #不用括号
• tup3 = tuple('hello') #使用tuple()函数把字符串变为元组
• tup4 = tuple([1,2,3]) #使用tuple()函数把列表转为元组
#– 元组操作符 + ,* ,in 判断
• tup1+tup2 
• tup3*23 in tup4

六、 集合set

1、概念

set是一个无序且不重复的元素集合。

2、创建集合的语法形式


变量名= set( ) 

3、dict示例:

s1 = {1,2,3}
s2 = set('456')
s3 = set( [1,1,2,2,'a','b','b','c'] ) # 会去重
5-5 listdict的应用
#构建一个学生库,保存3位学员信息,接下来完成新增学员,查找学员,删除学员,修改学员信息的功能。
stu1={'id':1,'name':'aa','age':12,'sex':'男'}
stu2 = {'id': 2, 'name': 'aa1', 'age': 12, 'sex': '男'}
stu3 = {'id': 3, 'name': 'aa2', 'age': 14, 'sex': '男'}
stuLib=[stu1,stu2,stu3]
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值