前面学了列表和字典,今天我们看一个和列表相似的类型元组。再总结一个集合类型。

预习:

1、简单购物车
  实现打印商品详细信息,用户输入商品名和购买个数,则将商品名,价格,购买个数加入购物列表,如果输入为空或其他非法输入则要求用户重新输入  
msg_dic={
'apple':10,
'tesla':100000,
'mac':3000,
'lenovo':30000,
'chicken':10,
}
2、有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}
linuxs={'wupeiqi','oldboy','gangdan'}
1. 求出即报名python又报名linux课程的学员名字集合
2. 求出所有报名的学生名字集合
3. 求出只报名python课程的学员名字
4. 求出没有同时这两门课程的学员名字集合
3、
1. 有列表l=['a','b',1,'a','a'],列表元素均为可hash类型,去重,得到新列表,且新列表无需保持列表原来的顺序
2.在上题的基础上,保存列表原来的顺序
3.去除文件中重复的行,肯定要保持文件内容的顺序不变
4.有如下列表,列表元素为不可hash类型,去重,得到新列表,且新列表一定要保持列表原来的顺序
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'},
]

本篇导航:

一、元组(tuple)

为何要有元组?===>存多个值,对比列表来说,元组不可变,主要是用来读

定义:与列表类型相似,只不过[]换成(),元组是不可变类型所以可以当做字典的key

 t=(1,[1,3],'sss',(1,2)) #t=tuple((1,[1,3],'sss',(1,2)))
print(type(t))

元组所以可以当做字典的key

 #元组可以作为字典的key
d={(1,2,3):'egon'}
print(d,type(d),d[(1,2,3)])

常用方法:

#为何要有元组,存放多个值,元组不可变,更多的是用来做查询
t=(1,[1,3],'sss',(1,2)) #t=tuple((1,[1,3],'sss',(1,2)))
print(type(t)) #元组可以作为字典的key
d={(1,2,3):'egon'}
print(d,type(d),d[(1,2,3)]) # 索引
goods=('iphone','lenovo','sanxing','suoyi')
print(goods.index('iphone'))
print(goods.count('iphone')) #统计 #切片
goods=('iphone','lenovo','sanxing','suoyi')
print(goods[1:3]) # 长度
print(len(goods)) #in:
goods=('iphone','lenovo','sanxing','suoyi')
print('iphone' in goods) #补充:元组本身是不可变的,但是内部的元素可以是可变类型
t=(1,['a','b'],'sss',(1,2)) #t=tuple((1,[1,3],'sss',(1,2)))
t[1][0]='A'
print(t)
# t[1]='aaaaaaaaaaaa' #报错

补充:元组本身是不可变的,但是内部的元素可以是可变类型

 t=(1,['a','b'],'sss',(1,2)) #t=tuple((1,[1,3],'sss',(1,2)))
t[1][0]='A'
print(t)
# t[1]='aaaaaaaaaaaa' #报错

二、集合(set)

集合:可以包含多个元素,用逗号分割

作用:去重,关系运算

集合的元素遵循三个原则:

1、集合是可变类型但每个元素必须是不可变类型

2、没有重复的元素

3、无序

注意:集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结于集合中单个值

 s={1,2,2,'eaaa',(1,2,3)} #s=set({1, 2, (1, 2, 3), 'eaaa'})
print(s,type(s))

重点及方法:

# in 和 not in
pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}
print('egon' in pythons) pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}
linuxs={'wupeiqi','oldboy','gangdan'}
# | 并集:所有报名的学生名字集合
s=pythons | linuxs
print(s)
print(pythons.union(linuxs)) # & 交集:求二者共同的部分:求即报名python又报名linux的学生
s=pythons & linuxs
print(s)
print(pythons.intersection(linuxs)) # - 差集:求只报名python,没有报名linux的学生
print(pythons - linuxs)
print(pythons.difference(linuxs)) # ^ 对称差集: 没有同时报名python和linux课程的学生名字集合
print(pythons ^ linuxs)
print(pythons.symmetric_difference(linuxs)) # ==
set1={1,2,3}
set2={1,2,3}
print(set1 == set2) # >,>= ,<,<= 父集,子集 set1={1,2,3,4,5}
set2={1,2,3,4}
print(set1 >= set2)
print(set1.issuperset(set2)) print(set2 <= set1)
print(set2.issubset(set1))
#以上的运算中符号和方法的作用相同可以根据自己的理解记忆一种即可 linuxs={'wupeiqi','oldboy','gangdan'}
linuxs.add('asb') #set类型的集合是可变类型
# linuxs.add([1,2,3]) #报错,只能添加不可变类型
print(linuxs) res=linuxs.pop() #不用指定参数,随机删除,并且会有返回值
print(res) res=linuxs.remove('oldboy') #指定元素删除,元素不存在则报错,单纯的删除,没有返回值,
# # print(linuxs)
# print(res)
#
# res= linuxs.discard('oldboy1111111') #指定元素删除,元素不存在不报错,单纯的删除,没有返回值,
print(linuxs)
print(res) #以下方法可做了解
#update() 更新
linuxs={'wupeiqi','oldboy','gangdan'}
new_set={'wupeiqi','alex_SB'}
# linuxs.update(new_set)
# print(linuxs) # new_set.update(linuxs)
# print(new_set) #清除
# linuxs.clear()
#复制
# linuxs.copy()

三、赋值

x=10

#链式赋值
# a=b=c=d=e=f=10
# print(a,b,c,d,e,f) #增量赋值
x=10
y='a'
# temp=x
# x=y
# y=temp
# print(x,y) # x,y=y,x
# print(x,y) #值的解压
msg='hello'
l=[1,2,3] # a,b,c,d,e=msg
# print(a,b,c,d,e) # a,_,_,_,e=msg
# a,*_,e=msg
# print(a)
# print(e) # dic={'a':1,'b':2,'c':3}
# x,y,z=dic
# print(x,y,z)

预习解答:

'''
实现打印商品详细信息,用户输入商品名和购买个数,则将商品名,价格,购买个数加入购物列表,
如果输入为空或其他非法输入则要求用户重新输入
msg_dic={
'apple':10,
'tesla':100000,
'mac':3000,
'lenovo':30000,
'chicken':10,
}
''' msg_dic = {'apple':10,'tesla':100000,'mac':3000,'lenovo':30000,'chicken':10,}
shop_card = []
while True:
for k in msg_dic:
print('name:{} price:{}'.format(k,msg_dic[k])) goods=input('商品名: ').strip()
if len(goods) == 0 :
print("没有输入商品名称!")
continue
if not goods in msg_dic : #等同goods not in msg_dis
print("本商城没有此商品!")
continue while True :
num = input('购买个数: ').strip()
if len(num) == 0 :
print("没有输入商品数量!")
continue
if not num.isdigit() :
print("商品数量格式输入有误!")
continue
break shop_card.append((goods,msg_dic[goods],int(num)))
print(shop_card) # 有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
# pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}
# linuxs={'wupeiqi','oldboy','gangdan'}
pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}
linuxs={'wupeiqi','oldboy','gangdan'}
# 1. 求出即报名python又报名linux课程的学员名字集合
print(pythons & linuxs)
# 2. 求出所有报名的学生名字集合
print(pythons | linuxs)
# 3. 求出只报名python课程的学员名字
print(pythons - linuxs)
# 4. 求出没有同时这两门课程的学员名字集合
print(pythons ^ linuxs) # 1. 有列表l=['a','b',1,'a','a'],列表元素均为可hash类型,去重,得到新列表,且新列表无需保持列表原来的顺序
l=['a','b',1,'a','a']
print(set(l))
# 2.在上题的基础上,保存列表原来的顺序
l1=[]
for i in l:
if i not in l1:
l1.append(i)
print(l1) # 4.有如下列表,列表元素为不可hash类型,去重,得到新列表,且新列表一定要保持列表原来的顺序
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'},
]
l1=[]
for item in l:
if item not in l1:
l1.append(item)
print(l1)

小知识点:

in:字符串,列表,元组,字典,集合

for:字符串,列表,元组,字典,集合

解压:字符串,列表,元组,字典,集合

python基础(7):元祖类型(赋值补充)的更多相关文章

  1. Python基础入门-元祖

    其实,元组合列表的特性和使用几乎差不太多,今天我们重点来看下元组的一些操作和使用. 1.元祖的定义和特点 定义:元组是以小括号包围,元素以逗号分隔,不可变的序列之一. 特点: 1)元祖内的元素不可以增 ...

  2. python基础之元祖、嵌套,for循环、 enumerate、range的试用案例

    元祖又叫做只读列表,可循环查询.可切片,元祖里的直接元素不能更改,但是若里面有嵌套的列表,则可以修改列表里的元素 tu = (1,2,3,'sun',[3,4,5,'cat']) tu[4][3] = ...

  3. python基础之元祖tuple

    元祖是只读列表,不可哈希,可循环查询,可切片*儿子不能改,孙子可更改--元祖里面单个元素不能更改---元祖内列表可更改增:tu1+tu2查:tu1[index] tu1[start_index:end ...

  4. python基础--4 元祖

    #元组,元素不可被修改,不能被增加或者删除 #tuple,有序 tu=(11,22,33,44,55,33) #count 获取指定元素在元祖中出现的次数 print(tu.count(33)) #i ...

  5. Python基础笔记-元祖

    Python 的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. def main(): tup2 = ...

  6. day007 列表类型、元祖类型、 字典类型、 集合类型的内置方法

    目录 列表数据类型的内置方法 作用 定义方式 优先掌握的方法 需要掌握的方法 元祖类型的内置方法 作用 定义方式 优先掌握的方法(参考列表方法) 字典类型的内置方法 作用 定义方式 优先掌握的方法 需 ...

  7. python基础——使用元类

    python基础——使用元类 type() 动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的. 比方说我们要定义一个Hello的class,就写一个hello. ...

  8. PYTHON-基本数据类型-元祖类型,字典类型,集合类型

    内容: 1. 元组 2. 字典 3. 集合=========================== 元祖类型什么是元组: 元组就是一个不可变的列表============================ ...

  9. Python中的元祖Tuple

    Python中的元祖和list基本上一样 tuple = () # 表示一个空的元祖 tuple = (50, ) # 元组中只有一个元素的时候,必须在后面加上逗号 无关闭分隔符 任意无符号的对象,以 ...

  10. Python基础-python数据类型之元祖、字典(四)

    元祖 Python的元组与列表类似,不同之处在于元组的元素不能修改.元组使用小括号,列表使用方括号. tuple=(1,2,3,4) print(tuple) 访问元祖 通过索引访问,也可以进行切片操 ...

随机推荐

  1. void main(), int main() 和int main(void)的区别

    1.区别是main()函数是否有返回值.2.void定义的函数没有返回值,int定义的函数返回整型值.3.void,字面意思是"无类型",常用在程序编写中对定义函数的参数类型.返回 ...

  2. Python有哪些好用的语言翻译方法

    最近有个需求,要将几万条数据从日语翻译成中文.因为数据的获取和处理用的是python代码,所以想先尝试翻译部分也用python实现. 目前网上查到的翻译方法有百度.有道云以及谷歌翻译,下面会对这三个方 ...

  3. (原创)Maven+Spring+CXF+Tomcat7 简单例子实现webservice

    这个例子需要建三个Maven项目,其中一个为父项目,另外两个为子项目 首先,建立父项目testParent,选择quickstart: 输入项目名称和模块名称,然后创建: 然后建立子项目testInt ...

  4. Java之【线程通信】--标志位练习

    * 写两个线程,一个线程打印1-52,另一个线程答应字母A-Z. * 打印顺序为12A34B56C--5152Z.通过使用线程之间的通信协调关系. 注:分别给两个对象构造一个对象o,数字每打印两个或字 ...

  5. \classes\META-INF\MANIFEST.MF (系统找不到指定的路径。)

    开发项目重启eclipse 发现了如下错误! 解决方法 选择出现错误的项目 点击clean 即可~

  6. 移动端页面开发适配 rem布局原理

    主题 HTML移动端页面开发适配 rem布局原理 什么是适配,为什么要适配 我们拿到的设计图一般是以640,750,1080分辨率为基准设计的,而现在的手机终端各式各样,分辨率不同,逻辑像素不同 ,适 ...

  7. Bash环境配置文件

    一.环境配置文件读取优先级 其中~/.bash_profile,~/.bash_login,~/.profile三个文件只有一个有效,查找优先级从左至右降低.bash会一直检查是否有~/.bashrc ...

  8. cpio用法详细说明

    1.1 cpio基本介绍 cpio是一个非常古老的归档工具.已逐渐被tar替代,但是有些功能是tar不存在的,所以还是分享下它的用法. cpio - copy files to and from ar ...

  9. html与xhtml有什么区别?

    HTML与XHTML之间的差别,主要分为功能上的差别和书写习惯的差别两方面. 关于功能上的差别,主要是XHTML可兼容各大浏览器.手机以及PDA,并且浏览器也能快速正确地编译网页. 由于XHTML的语 ...

  10. 使用 XML 配置 MyBatis

    构建 SqlSessionFactory 最常见的方式是基于 XML 配置(的构造方式).下面的 mybatis-config.xml 展示了一个 典型的 MyBatis 配置文件的样子: XML C ...