一、引子

1、什么是数据?

x=10,10是我们要存储的数据。

2、为何数据要分不同的类型?

数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示。

3、存在哪些数据类型

  • 数字(整形,长整形,浮点型,复数)
  • 字符串
  • 列表
  • 元组
  • 字典
  • 集合

4、按照以下几个点展开数据类型的学习

#一:基本使用
1 用途
2 定义方式
3 常用操作+内置的方法#二:该类型总结
1 存一个值or存多个值只能存一个值可以存多个值,值都可以是什么类型
2 有序or无序        能按位置取值,就是有序;否则无序
3 可变or不可变!!!可变:值变,id不变。可变==不可hash!!!不可变:值变,id就变。不可变==可hash

 二、数字

1、整型与浮点型

#一:int(无内置方法)
#作用:年龄,级别,等级,身份证号
x=10 #x=int(10)
print(id(x),type(x),x)#二:float
#作用:工资,身高,体重
salary=3.1 #salary=float(3.1)
print(id(salary),type(salary),salary)

数字无长度!

2、其他数字类型(了解)

#长整形(了解)
    在python2中(python3中没有长整形的概念):      >>> num=2L>>> type(num)<type 'long'>#复数(了解)  >>> x=1-2j>>> x.real1.0>>> x.imag-2.0

View Code

3、实操

int与float为不可变类型:
>>> x=123
>>> id(x)
4297640800
>>> x=12345
>>> id(x)
4320497584>>> x=3.14
>>> id(x)
4300280000
>>> x=9.11
>>> id(x)
4300280120>>> x=123
>>> y=123
>>> id(x)
4297640800
>>> id(y)
4297640800
>>> x=1234567890
>>> y=1234567890
>>> id(x)
4320497488
>>> id(y)
4320497584is身份判断,判断id是否相等 identify
>>> x==y
True
>>> x is y
False也就是说,值相等,id可以不一样:申请两个内存空间,放同样的值;
如果id一样,那么它们用的是同一个内存空间,所以类型、值全部一样。
>>> x=123
>>> y=x
>>> x is y
True
>>> x==y
True
>>> 但,当数据量比较小的时候:小到没必要把时间耗费在申请内存空间上。
>>> x=123
>>> y=123
>>> id(x)
4297640800
>>> id(y)
4297640800字符串同理:
>>> x='abcdefg'
>>> y='abcdefg'
>>> id(x)
4320792392
>>> id(y)
4320792392
>>> x='Today is Monday'
>>> y='Today is Monday'
>>> id(x)
4320819568
>>> id(y)
4320819632

三、字符串;

#作用:名字,性别,国籍,地址等描述信息#定义:在单引号\双引号\三引号内,由一串字符组成
name='guoxq'#优先掌握的操作:
按索引取值(正向取+反向取) :只能取
切片(顾头不顾尾,步长)
长度len
成员运算in和not in移除空白strip
切分split

1、实操

#用途:名字,性别,地址
name='guoxq' #name=str('guoxq')
# print(id(name),type(name),name)#优先掌握的操作:
# 按索引取值(正向取+反向取) :只能取
# print(name[0],type(name[0]))
# print(name[-2])
# name[0]='E'                    #字符串不支持插入字符# 切片(顾头不顾尾,步长)
# print(name[1:3])
# msg='hello world'
# print(msg[1:7])
# print(msg[1:7:2])# msg='abcdefg'     #bdf
# # print(msg[1:6:2])
# # print(msg[::2])
# print(msg[6::-1]) #了解
# print(msg[5:0:-1])  #顾头不顾尾,所以取不到a# print(msg[5::-1])   #去掉零,就可以取全
# 长度len
# msg='ab c '
# print(len(msg))# 成员运算in和not in
# msg='hello alex'
# print('a' in msg)
# print('alex' in msg)
# print('ae' not in msg)# 移除空白strip
# password='   alex3714              '
# password=password.strip()
# print(password)
# print(password.strip())# msg='***egon***********'
# print(msg.strip('*'))
# msg='***eg**on***********'
# print(msg.strip('*'))# 切分split
user_info='root:x:0:0::/root:/bin/bash'
# print(user_info[0:4])
# print(user_info.split(':')[0])    #取第0个值
# print(user_info.split(':',1))    #切一次# cmd='put       a.txt'
# print(cmd.split())# filepath='put /a/b/c/d/a.txt'
# print(filepath.split())
# filepath='/a/b/c/d/a.txt'# print(filepath.split('/')[-1])
# msg='alex say i have on tesla'
# print(msg.split(maxsplit=1)[0])           #切一次,取第0个值#isdigit:用来判断字符是否是由纯数字组成(bytes,unicode)#常用操作
# msg='***alex****'
# print(msg.strip('*'))
# print(msg.lstrip('*'))
# print(msg.rstrip('*'))# msg='alex_SB'
# print(msg.startswith('alex'))
# print(msg.endswith('SB'))# msg='alex say i have one telsa, my name is alex'
# print(msg.replace('alex','SB',1))    #替换一次# print('my name is %s my age is %s' %('egon',18))
# print('my name is {} my age is {}'.format('egon',18))
# print('{1} {0} {1}'.format('egon',18))    #‘egon’对应0;18对应1# print('my name is {x} my age is {y}'.format(y=18,x='egon'))    #可以无序#split
# user_info='root:x:0:0::asdfasdf'
# l=user_info.split(':')#join
# print(':'.join(l))    #将上面l返回的列表,用:再连接起来,与原来一样;
# print(''.join(l))
# print(' '.join(l))#center,ljust,rjust,zerofill
#=================egon===================
# print('egon'.center(30,'='))
# print('egon'.rjust(30,'='))
# print('egon'.ljust(30,'='))
# print('egon'.zfill(30))#了解部分
#find,rfind,index,rindex,count
# msg='hello world'
# print(msg.find('ell'))    #从左到右找,如果有,则返回第一个字符的索引
# print(msg.find('easdfasdf'))    #从左到右找,如果没有,返回-1# print(msg.index('d',0,3))    #从左到右找,如果有,则返回第一个字符的索引
# print(msg.index('x'))    #从左到右找,如果有,则返回第一个字符的索引# print(msg.count('l',0,4))
# print(msg.count('l',0,3))# msg='abc\tdeft'
# print(msg.expandtabs(3))    #3个空格# msg='alex Say hello'
# print(msg.capitalize())    #整句话,首字母大写
# print(msg.upper())    #全部字母大写
# print(msg.lower())    #全部字母小写
# print(msg.title())    #每个单词首字母大写
# print(msg.swapcase())    #颠倒大小写#is系列
# msg='Alex Say Hello'
# print(msg.isupper())
# print(msg.islower())
# print(msg.istitle())

# msg='asasdf123'
# print(msg.isalnum())   #字符串是由字母或数字组成
msg='asdfasdf'
print(msg.isalpha())    #字符串是由字母组成的

# msg='   1'
# print(msg.isspace())    #字符串都是空格吗?都是空格为真
# msg='aaaai fabc'
# print(msg.isidentifier())    #字符串不存在空格吗?不存在为真#判断数字
# age=10
# inp=input('>>: ').strip()
# if inp.isdigit():    #isdigit能判断bytes和unicode
#     inp=int(inp)
#     if inp > age:
#         print('ok')
#
# else:
#     print('必须输入数字')

num1=b'4' #bytes
num2=u'4' #unicode,python3中无需加u就是unicode
num3='四' #中文数字
num4='壹'
num5='Ⅳ' #罗马数字#bytes,unicode
# print(num1.isdigit())
# print(num2.isdigit())
# print(num3.isdigit())
# print(num4.isdigit())
# print(num5.isdigit())#unicode
# print(num2.isdecimal())    #isdecimal也能判断数字,但是没有isdigit判断的全面
# print(num3.isdecimal())
# print(num4.isdecimal())
# print(num5.isdecimal())#unicode,汉字,罗马
# print(num2.isnumeric())
# print(num3.isnumeric())
# print(num4.isnumeric())
# print(num5.isnumeric())

2、练习题:

# 写代码,有如下变量,请按照要求实现每个功能 (共6分,每小题各0.5分)
# name = " aleX"
# 1)    移除 name 变量对应的值两边的空格,并输出处理结果
# print(name.strip())
# 2)    判断 name 变量对应的值是否以 "al" 开头,并输出结果

# print(name.startswith('al'))
# 3)    判断 name 变量对应的值是否以 "X" 结尾,并输出结果

# print(name.endswith('X'))
# 4)    将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果
# print(name.replace('l','p'))
# 5)    将 name 变量对应的值根据 “l” 分割,并输出结果。
# print(name.split('l'))
# 6)    将 name 变量对应的值变大写,并输出结果

# print(name.upper())
# 7)    将 name 变量对应的值变小写,并输出结果

# print(name.lower())
# 8)    请输出 name 变量对应的值的第 2 个字符?
# print(name[1])
# 9)    请输出 name 变量对应的值的前 3 个字符?
# print(name[0:3])
# 10)    请输出 name 变量对应的值的后 2 个字符?

# print(name[3:])
# or
# name=' aleX'
# print(name[-2:])
# 11)    请输出 name 变量对应的值中 “e” 所在索引位置?

# print(name.index('e'))
# 12)    获取子序列,去掉最后一个字符。如: oldboy 则获取 oldbo。
# name=' oldboy '
# print(name[0:6])
name=' oldboy '
print(name[:-2])

四、列表

#作用:多个装备,多个爱好,多门课程,多个女朋友等#定义:[]内可以有多个任意类型的值,逗号分隔
my_girl_friends=['alex','wupeiqi','yuanhao',4,5] #本质my_girl_friends=list([...])
或
l=list('abc')#优先掌握的操作:
按索引存取值(正向存取+反向存取):即可存也可以取
切片(顾头不顾尾,步长)
长度
成员运算in和not in
追加
删除

1、注意步长

#ps:反向步长
l=[1,2,3,4,5,6]#正向步长
l[0:3:1] #[1, 2, 3]
#反向步长
l[2::-1] #[3, 2, 1]
#列表翻转
l[::-1] #[6, 5, 4, 3, 2, 1]

2、实操

#定义:[]内可以有多个任意类型的值,逗号分隔
my_girl_friends=['alex','wupeiqi','yuanhao',4,5] #本质my_girl_friends=list([...])#优先掌握的操作:
# 按索引存取值(正向存取+反向存取):即可存也可以取
# print(my_girl_friends[2])
# print(my_girl_friends[-1])
# print(id(my_girl_friends))
# my_girl_friends[0]='SB'
# print(id(my_girl_friends))
# print(my_girl_friends)# 切片(顾头不顾尾,步长)
# print(my_girl_friends[0:2])
# print(my_girl_friends[0:4:2])# 长度
# print(len(my_girl_friends))    #元素个数# 成员运算in和not in
# print('alex' in my_girl_friends)
# print(5 in my_girl_friends)# 追加
# my_girl_friends.append('6号')    #默认加在后面
# print(my_girl_friends)# 删除
# del my_girl_friends[2]
# print(my_girl_friends)# print(my_girl_friends.remove('yuanhao')) #remove是单纯的删除,不会返回删除的值,并且是按照值去删
# res=my_girl_friends.pop(1) #按照索引取删,默认从末尾开始删
# print(res)  #返回删除的值# my_girl_friends.pop() #按照索引取删,默认从末尾开始删
# print(my_girl_friends)#常用操作:
my_girl_friends=['alex','wupeiqi','alex','yuanhao',4,5] #本质my_girl_friends=list([...])
# my_girl_friends.insert(0,'sb_alex')
# my_girl_friends.insert(2,'yh')# my_girl_friends.extend([1,2,3,4])    #默认向末尾扩展# print(my_girl_friends.count('alex'))#了解
# my_girl_friends.clear()    #清空列表
# print(my_girl_friends)

# l=my_girl_friends.copy()    #复制列表
# print(l)

# my_girl_friends.reverse()    #颠倒列表
# print(my_girl_friends)# l=[3,4,-1,2]# l.sort    #排序
# l.sort(reverse=True)    #反过来排序
# print(l)

3、练习题:

#队列:先进先出
#append,pop
# l1=[]
# l1.append('first')
# l1.append('second')
# l1.append('third')# print(l1.pop(0))
# print(l1.pop(0))
# print(l1.pop(0))#堆栈:先进后出
# l1=[]
# l1.append('first')
# l1.append('second')
# l1.append('third')# print(l1.pop())
# print(l1.pop())
# print(l1.pop())

同上:
l1=[]
l1.insert(0,'first')
l1.insert(0,'second')
l1.insert(0,'third')
print(l1)
print(l1.pop(0))
print(l1.pop(0))
print(l1.pop(0))END. 有列表data=['alex',49,[1900,3,18]],分别取出列表中的名字,年龄,出生的年,月,日赋值给不同的变量
data=['alex',49,[1900,3,18]]
name=data[0]
age=data[1]
year=data[2][0]
month=data[2][1]
day=data[2][2]
print(name,age,year,month,day)

五、元组

#作用:存多个值,对比列表来说,元组不可变(是可以当做字典的key的),主要是用来读#定义:与列表类型比,只不过[]换成()
age=(11,22,33,44,55)本质age=tuple((11,22,33,44,55))#优先掌握的操作:
按索引取值(正向取+反向取):只能取
切片(顾头不顾尾,步长)
长度
成员运算in和not in

1、实操

#作用:存多个值,对比列表来说,元组不可变(是可以当做字典的key的),主要是用来读
#定义方式:
ages=(10,12,18,33,18) #ages=tuple((10,12,18,33))
# print(id(ages),type(ages),ages)#优先掌握的操作:
# 按索引取值(正向取+反向取):只能取
# 切片(顾头不顾尾,步长)
# print(ages[0:2])
# print(ages)
# 长度
# print(len(ages))
# 成员运算in和not in
# print(10 in ages)#其他操作:
# print(ages.index(18))
# print(ages.index(123123123123))    #报错,他不在tuple(元组)里面
# print(ages.count(18))    #18出现几次# l=['a','b','c','d','e']
# # l='abcde'
# l=('a','b','c','d','e')
# index=0
# while index < len(l):
#     print(l[index])
#     index+=1
# l1=['a','b','c','d','e']
# for item in l1:
#     print(item)
# l2='abcde'
# for item in l2:
#     print(item)# for i in range(1,10,2):
#     print(i)

# l1=['a','b','c','d','e']
# for i in range(len(l1)):#     print(i)#     print(i,l1[i])

2、练习题:

#简单购物车,要求如下:
实现打印商品详细信息,用户输入商品名和购买个数,则将商品名,价格,购买个数加入购物列表,如果输入为空或其他非法输入则要求用户重新输入
msg_dic={
'apple':10,
'tesla':100000,
'mac':3000,
'lenovo':30000,
'chicken':10,
}
goods_l=[]
# while True:
#     for item in msg_dic:
#         print(item,msg_dic[item])
#     choice=input('请输入您想要购买的商品: ').strip()
#     if choice not in msg_dic:continue
#     count=input('请输入您要购买的个数: ').strip()
#     if count.isdigit():
#         goods_l.append((choice,msg_dic[choice],int(count)))
#         print(goods_l)while True:for item in msg_dic:print(item,msg_dic[item])choice=input('请输入您想要购买的商品: ').strip()if choice in msg_dic:count=input('请输入您要购买的个数: ').strip()if count.isdigit():goods_l.append((choice,msg_dic[choice],int(count)))print(goods_l)else:print('请输入列表里的产品: ')下一节字典知识的运用:
while True:for key,item in msg_dic.items():print('name:{name} price:{price}'.format(price=item,name=key))choice=input('商品>>: ').strip()if not choice or choice not in msg_dic:continuecount=input('购买个数>>: ').strip()if not count.isdigit():continuegoods_l.append((choice,msg_dic[choice],count))print(goods_l)

3、补充了解知识点(for)

#while+else
# for i in range(5):
#     if i == 3:break
#     print(i)
# else:
#     print('ok')

for也支持+else和break。

六、字典

#作用:存多个值,key-value存取,取值速度快#定义:key必须是不可变类型,value可以是任意类型
info={'name':'egon','age':18,'sex':'male'} #本质info=dict({....})
或
info=dict(name='egon',age=18,sex='male')
或
info=dict([['name','egon'],('age',18)])
或
{}.fromkeys(('name','age','sex'),None)#优先掌握的操作:
按key存取值:可存可取
长度len
成员运算in和not in删除
键keys(),值values(),键值对items()

1、实操:

#定义:key必须是不可变类型,value可以是任意类型
# d={'a':1}
# d={0:1}
# d={[1,2,3]:1}   #列表不能当做字典的key# d={(0,'mac'):3000}
# print(d[(0,'mac')])

info={'name':'egon','age':18,'sex':'male'} #本质info=dict({....})
#优先掌握的操作:
# 按key存取值:可存可取
# print(info['sex'])
# info['hobbies']=['read','music','play','sleep','eat']
# print(info)# 长度len
# print(len(info))# 成员运算in和not in# 删除
# print(info.pop('name'))
# print(info.pop('name1213','确实是没有的,我的哥'))
# print(info.pop('name1213',None))# 键keys(),值values(),键值对items()
# print(info.keys())
# print(info.values())
# print(info.items())# for key in info.keys():
#     print(key)# for val in info.values():
#     print(val)# for item in info.items():
#     print(item[0],item[1])#常用方法
# info={'name':'egon','age':18,'sex':'male'}
# print(info['name123'])
# print(info.get('name123',123))    #取值不报错
# print(info.popitem())    #弹出最后一个key-value,pop是弹出value# for k,v in info.items():   #k,v=('name', 'egon')
#     print(k,v)# print(info.setdefault('hobbies',['read','music'])) #有则不改,返回已经有的值,没有则新增,返回新增的值
# print(info)# print(id(info.setdefault('hobbies',[])))    #id一样
# print(id(info['hobbies']))

info={'name':'egon','age':18,'sex':'male',}
# if 'hobbies' not in info:
#     info['hobbies']=[]
#     info['hobbies'].append('music')
# else:
#     info['hobbies'].append('read')
#
# if 'hobbies' not in info:
#     info['hobbies'] = []
#     info['hobbies'].append('music')
# else:
#     info['hobbies'].append('read')
#
# print(info)# info.setdefault('hobbies',[]).append('music')# # {'name': 'egon', 'age': 18, 'sex': 'male', 'hobbies': ['music', ]}
# info.setdefault('hobbies',[]).append('read')     #['music', ].append('read')
# print(info)#了解
# info_new={'a':1,'age':19}    #'a'新增,‘age'更新
# info.update(info_new)
# print(info)# dic={'name':None,'age':None,'sex':None,'hobbies':None}
# dic1={}.fromkeys(['name','age','hobbies'],None)
# print(dic1)#补充两种赋值方式:
#一:链式赋值
# x=10
# y=x
# x=y=z=10
# print(id(x),id(y),id(z))#交换两个变量的值
# m=10
# n=20
# temp=n
# n=m #n=10
# m=temp
# print(m,n)
# m,n=n,m
# print(m,n)#二:从一个数据类型中解压出我们想要的值
# t=(10.3,11.2,12.1,14.3,3.1)# x,y,z,a,b=t
# print(x,y,z,a,b)# x,_,_,_,b=t
# print(x,b)
# print(_)# x,*_,b=t    #*后面多个_
# print(x,b)# x,*_='hello'
# print(x)# x,y,z={'a':1,'b':2,'c':3}    #取值
# print(x,y,z)

2、练习题:

#1 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中
#即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}# l=[11,22,33,44,55,66,77,88,99,90]
# a={'k1':[],'k2':[]}
# for i in l:
#     if i > 66:
#         a['k1'].append(i)
#     else:
#         a['k2'].append(i)
# print(a)# 2 统计s='hello alex alex say hello sb sb'中每个单词的个数
# 结果如:{'hello': 2, 'alex': 2, 'say': 1, 'sb': 2}
# s='hello alex alex say hello sb sb'
# l=s.split()
# dic={}
# for item in l:
#     if item in dic:
#         dic[item]+=1
#     else:
#         dic[item]=1
# print(dic)# s='hello alex alex say hello sb sb'
# dic={}
# words=s.split()
# print(words)
# for word in words: #word='alex'
#     dic[word]=s.count(word)
# print(dic)#利用setdefault解决重复赋值
'''
setdefault的功能
1:key存在,则不赋值,key不存在则设置默认值
2:key存在,返回的是key对应的已有的值,key不存在,返回的则是要设置的默认值
d={}
print(d.setdefault('a',1))   #返回1d={'a':2222}
print(d.setdefault('a',1))   #返回2222
'''
# s='hello alex alex say hello sb sb'
# dic={}
# words=s.split()
# for word in words:   #word='alex'
#     dic.setdefault(word,s.count(word))
#     print(dic)

七、集合

#作用:去重,关系运算,#定义:可变类型是不可hash类型不可变类型是可hash类型#定义集合:
            集合:可以包含多个元素,用逗号分割,集合的元素遵循三个原则:1:每个元素必须是不可变类型(可hash,可作为字典的key)2:没有重复的元素3:无序注意集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结于集合中单个值#优先掌握的操作:
长度len
成员运算in和not in|合集
&交集
-差集
^对称差集
==
>,>= ,<,<= 父集,子集 

1、实操:

# pythons=['alex','wupeiqi','egon','yuanhao','gangdan','oldboy']
# linuxs=['egon','oldboy','tiedan','liudan']# l=[]
# for item in pythons:
#     if item in linuxs:
#         l.append(item)    #找出即报名python又报名linux的学员
# print(l)

# s={1,2,'a','b','c','d','e','f'}   #s=set({1,2,'a'})
# print(type(s),s)# 优先掌握的操作:
# 长度len
# s={1,2,'a','b','c','d','e','f'}
# print(len(s))
# 成员运算in和not in
# print('a' in s)
# for item in s:
#     print(item)

# | 并集
# s1={1,2,3}
# s2={3,4,5}
# print(s1 | s2)# & 交集
# print(s1 & s2)# -差集    #在s1里,不在s2里,或在s2里,不在s1里
# print(s1 - s2)
# print(s2 - s1)# ^ 对称差集    #共有部分之外的部分
# s1={1,2,3}
# s2={3,4,5}# ==
# > , >= , <, <= 父集,子集
# s1={1,2,3,4}
# s2={3,4,5}
# print(len(s1) > len(s2))# s1={1,2,3,4}
# s2={3,4}
# print(s1 > s2)
# print(s1 >= s2)#常用操作
s1={1,2,3,'a',4}
# print(s1.pop())   #随机删,并返回删除的结果# s1.remove('a')   #单纯地删,不会返回删除的结果,并且如果删除的元素不存在则报错
# s1.remove('asdfasdfa')   #单纯地删,不会返回删除的结果
# print(s1)
# print(s1.discard('a'))   #单纯地删,不会返回删除的结果,并且如果删除的元素不存在返回None,不会报错
# print(s1)# s1.add('b')
# print(s1)

s1={1,2,3}
s2={4,5}
# print(s1.isdisjoint(s2))   #如果s1和s2没有交集则返回True#了解
# s1={1,2,3,4}
# s2={3,4,5}# | 并集
# print(s1.union(s2))# & 交集
# print(s1.intersection(s2))
# s1.intersection_update(s2)   #s1=s1.intersection(s2)
# print(s1)

# -差集
# print(s1.difference(s2))# ^ 对称差集
# print(s1.symmetric_difference(s2))# ==
# > , >= , <, <= 父集,子集
# s1={1,2,3,4}
# s2={3,4}
# print(s1.issuperset(s2))
# print(s2.issubset(s1))#去重,无需保持原来的顺序
# l=['a','b',1,'a','a']# print(set(l))
# print(list(set(l)))
#去重,需要保持原来的顺序
# l=['a','b',1,'a','a']
# l_new=[]      #等同于 l_new=list()
# s=set()
# for item in l:
#     if item not in s:
#         s.add(item)
#         l_new.append(item)# print(l_new)

#列表中元素为可变类型时,去重,并保持原来的顺序
l=[{'name':'egon','age':18,'sex':'male'},{'name':'alex','age':73,'sex':'male'},{'name':'egon','age':20,'sex':'female'},{'name':'egon','age':18,'sex':'male'},{'name':'egon','age':18,'sex':'male'},
]
l_new=list()
s=set()
for item in l:res = (item['name'], item['age'], item['sex'])if res not in s:s.add(res)l_new.append(item)
print(l_new)#了解:不可变集合    可变才有.add  .pop  .remove等
fset=frozenset({1,2,3})
fset.

八、数据类型总结

1、按存储空间的占用分(从低到高)

数字
字符串
集合:无序,即无序存索引相关信息
元组:有序,需要存索引相关信息,不可变
列表:有序,需要存索引相关信息,可变,需要处理数据的增删改
字典:无序,需要存key与value映射的相关信息,可变,需要处理数据的增删改

2、按存值个数区分

标量/原子类型 数字,字符串
容器类型 列表,元组,字典

3、按可变不可变区分

可变 列表,字典
不可变 数字,字符串,元组

4、按访问顺序区分

直接访问 数字
顺序访问(序列类型) 字符串,列表,元组
key值访问(映射类型) 字典

5、练习题:

# 1. 文件a.txt内容:每一行内容分别为商品名字,价钱,个数,求出本次购物花费的总钱数
# apple 10 3
# tesla 100000 1
# mac 3000 2
# lenovo 30000 3
# chicken 10 3
#
a=[{'name':'apple','price':10,'count':3},{'name':'tesla','price':100000,'count':1},{'name':'mac','price':3000,'count':2},{'name':'lenovo','price':30000,'count':3},{'name':'chicken','price':10,'count':3}
]
list=[]
num=0
res=0
for i in a:pri=i['price']*i['count']list.append(pri)while num < len(list):res+=list[num]num+=1
print(res)# 2. 修改文件内容,把文件中的alex都替换成SB
# a='alex is a good teacher, alex has a tesla'
# print(a.replace('alex','SB'))

九、作业

转载于:https://www.cnblogs.com/guoxiangqian/p/7505053.html

Day2-数据类型、字符编码、购物车相关推荐

  1. Python day2 数据类型 字符类型 文件处理

    阅读目录 一 数据 二 数字 三 字符串 四 列表 五 元组 六 字典 七 集合 八 数据类型总结 九 运算符 十 字符编码 十一 文件处理 一 数据 1 . 数据 x=10,10是我们要存储的数据 ...

  2. python中输出变量对应值的字符_第2章 Python基础-字符编码数据类型 字符编码字符串 练习题...

    1.简述位.字节的关系 位(bit)是计算机中最小的表示单元,数据传输是以"位"为单位的,1bit缩写为1b 字节(Byte)是计算机中最小的存储单位,1Byte缩写为1B 8bi ...

  3. 1.4 - 数据类型/字符编码练习题

    1.可变数据类型: list dict set 2.不可变数据类型: 数字类(bool int float complex) str tuple(元祖) frozenset(不可变集合) 1 # 1. ...

  4. python day2 python基础 列表、元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码...

    本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...

  5. 数据类型、字符编码、文件处理

    阅读目录 一 引子 二 数字 三 字符串 四 列表 五 元组 六 字典 七 集合 八 数据类型总结 九 运算符 十 字符编码 十一 文件处理 十二 作业 一 引子 1 什么是数据? x=10,10是我 ...

  6. 第一模块·开发基础-第2章·数据类型、字符编码、文件操作

    29 二进制转换 30 二进制转换(二) 31 二进制转换小练习讲解 32 ASCII码与二进制 33 字符串编码的烟花 34 Python里使用的编码 35 浮点数和科学计数法 36 浮点数的精确度 ...

  7. python可以处理任何字符编码文本_python数据类型、字符编码、文件处理

    介绍: 1.什么是数据? 例:x=10,10是我们要存储的数据 2.为何数据要分不同的类型? 数据是用来表示状态的,不同的状态用不同的类型的数据去表示 1.数据类型 1.数字(整形,长整形,浮点型,复 ...

  8. java char字符转编码_一、java基础-数据类型_数据类型转化_字符编码_转义字符

    1.Java  支持的8种基本数据类型: java的四种整数数据类型:byte 1    short 2     int4     long8 byte     8位带符号整数 -128到127之间的 ...

  9. JAVA数据类型及字符编码

    文章目录 一.数据类型作用 二.数据类型有哪些 三.基本数据类型占字节数 四.数据类型取值范围 五.字符编码 一.数据类型作用 数据类型是用来声明变量的,程序在运行过程中根据不同的数据类型分配不同大小 ...

  10. Python基础语法:数据类型、进制转换、转义字符、字符编码、整数与浮点数运算规则、布尔型运算规则

    本人使用的python版本为:Python 3.7.4 Python中的基本数据类型 整数:和数学上的表示一样,如 1, 3, 100. 有时也用十六进制表示,如 0xffaa, 0x09ad等 浮点 ...

最新文章

  1. 用.NET调用oracle的存储过程返回记录集
  2. 一个图片 在另一个图片定位_淋雨图片孤身一人 一个人在淋雨的图片_新闻资讯...
  3. synchronized的实现原理
  4. Java 8中的策略模式
  5. java简单编译器源代码_25行代码实现一个简单的编译器
  6. 【NOIP2015提高组】子串 区间DP+滚动数组优化
  7. 知乎“下沉”,快手“上游”
  8. C程序设计--排序(冒泡、选择、插入)--插入
  9. 操作系统原理实验报告——进程控制与描述
  10. 印象笔记打开错误_了不起的“印象”
  11. 心理学在计算机方面的应用,浅析计算机在心理学研究中的应用
  12. 全国行政区划代码到行政村_行政任务
  13. 【征文】纸短情长叹朝夕
  14. 组合数学6--母函数与递推关系
  15. 2019高校微信小程序开发大赛获奖作品——《brain头脑智序》
  16. rabbitmq server网络启动原理分析
  17. Linux一些基本操作(一)
  18. 【IT项目管理】第6章 习题
  19. visual 插件_我可能必须针对Visual StudioNETnbsp的MSN Messenger插件
  20. 英特尔 CPU 惊天漏洞事件完全详解

热门文章

  1. linux下的a.out文件
  2. HDU 4930 Fighting the Landlords(扯淡模拟题)
  3. 【MOSS】SPListItems操作
  4. Android UI线程和非UI线程
  5. Oracle查询一个用户的所有表的结构信息的SQL语句
  6. Eclipse 各种快捷键
  7. IPhone 应用程序管理
  8. Sys.WebForms.PageRequestManagerServerErrorException(status code 500 OR 12031)
  9. s5-11 距离矢量路由选择协议
  10. qhfl-6 购物车