Python(三)

DICT字典

定义

字典是一种通过名字或者关键字引用的得数据结构,其键可以是数字、字符串、元组,这种结构类型也称之为映射。其中字典中的键(key)和值(value)必须以冒号隔开,键值对之间以逗号隔开,用花括号{ }将所有键值对括起来形成字典。其格式为{key1:value1,key2:value2}。
注意:字典中键是唯一的不可以重复,但值可以重复出现;如果在一次创建中出现了两个相同的键,则后出现的键对应的值被赋给这个键;键必须不可变,所以可以用数,字符串或元组充当,不可以用列表。
由于保存在字典中的项没有特定的顺序,因此在字典中通过键而非偏移量来读取(与序列的区别);属于可变映射类型,支持通过索引赋值,可以在原处修改(通过键而非位置)。

创建

  • 直接创建字典
    利用字典的格式d1={key1:value1,key2:value2}直接创建字典。
  • dict()函数创建字典
    利用dict()函数将其他数据类型转化为字典。
  • 关键字创建字典
    采用关键字赋值的方法创建字典
d1={'one':1,'two':2,'three':3}
print(d1)
item1=(('one',1),('two',2),('three',3))
d2=dict(item1)
print(type(item1))
print(d2)
item2=dict(one=1,two=2,three=3)
print(item2)

在这里插入图片描述

字典的方法

  • 字典中值的查询
    与序列不同,在字典中对值的索引是通过键而非位置。如果用字典中没有的键访问数据,会出现错误。
d1={'one':1,'two':2,'three':3}
print(d1['three'])
print(d1['four'])

在这里插入图片描述

  • 字典的遍历
    通过**“ for…in ”**对字典的遍历包括字典中键(key),值(value)以及元素(item)。
d1={'name':"Alice",'age':20,'sex':"women"}
for key in d1.keys():
    print(key)
for value in d1.values():
    print(value)
for item in d1.items():
    print(item)

在这里插入图片描述

  • 字典格式化字符串
    类似于字符串的格式化,在字典中也可以通过key对字典中的value进行格式化。
d1={'name':'Alice','age':18,'sex':'woman'}
print("%(name)s is there"%d1)
print("she is %(age)d"%d1)

在这里插入图片描述

  • 字典元素的添加
    • 通过键对字典进行元素的新增(当该键对应的值存在时就是修改,不存在时就是添加);
    • 采用“+”对字典进行合并,在python3中需要用list将字典中的元素转化为列表;还可以通过update()方法对两个字典进行合并,且被合并的字典不会被改变。
d1={'name':"Alice",'age':20,'sex':"women"}
d1['character']='optimism'
print(d1)
d1['name']='Anna'
print(d1)
d2={'eduction':'undergraduate','racial':"American"}
d3=dict(list(d1.items())+list(d2.items()))
print(d3)
d4={'career':'student'}
d3.update(d4)
print(d3)
print(d4)

在这里插入图片描述

  • 字典中元素的删除
    • 删除整个字典,可以采用clear()方法
    • 删除字典中的单个元素可以通过pop()方法以及del()方法,pop()返回被删除的值;通过popitem()方法可以以K:V的方式删除字典中的一对键值并返回。
d1={'name':"Alice",'age':20,'sex':"women"}
d1['character']='optimism'
print(d1)
print(d1)
a=d1.pop('sex')
print(d1)
print(a)
b=d1.popitem()
print(d1)
print(b)

在这里插入图片描述

  • 存在判断
    • 键存在的判断
      • 通过 in/not in 来判断键是否在字典中;
      • 通过_contains_(key)来判断字典中是否存在该键值。
    • 值存在的判断
      • 通过get( ),setdefault( )来查找键对应的值是否在字典中,不存在时均返回None。
        两者的区别:get()中的参数为键,仅用于判断该键在字典中是否有对应值;
        而使用setdefault()中进行判断时,如果 key 存在于字典中,那么直接返回对应的值,等效于 get 方法;如果 key 不存在字典中,则会用 setdefault 中的第二个参数作为该 key 的值,再返回该值(若想为该键赋值,一定是在字典中未出现的键,否则无法赋值)
d1={'name':"Alice",'age':20,'sex':"women"}
d1['character']='optimism'
print(d1)
print(d1.__contains__('age'))
print('career' in d1)
print(d1.get('name'))
print(d1.setdefault('career'))
d1.setdefault('career')
print(d1)

在这里插入图片描述

方法作用
Python3中采用-eq-,ge()等代替cmp()字典中元素的比较
len()字典中元素的个数,即键的个数
copy()复制字典

集合

特性

集合set是没有顺序任何数据类型的聚集。如果有两个集合,则可以执行像联合、交集以及集合求差等标准集合运算。适用于在聚集中一个对象的存在比其顺序或者出现次数重要时使用
可以检查是否是成员,是否是另一个集合的子集,得到两个集合的交集等。
集合是由不同的元素组成的,元素为无序状态且各元素必须是不可变类型的。

创建

  • 直接创建
    通过集合格式直接创建集合,与字典类似也是由花括号{ }括起,不同的是集合中的仅有元素,没有键和值的区分,元素间由逗号隔开。
  • 通过set()创建
    利用set()函数将其他数据类型转化为集合,这种方法创建的是可变的集合,除此之外使用frozenset()创建的是不可变集合。
  • 创建空集合
    注意不可以使用{ }创建空集合,"{ }"是创建空字典的方法,空集合只能用set()来创建。
odd={1,3,5,7,9}
b=[0,2,4,6,8]
even=set(b)
print(type(odd),type(even))

在这里插入图片描述

方法

  • 添加元素
    在集合中添加单个元素用add()方法;添加多项元素用update([ ])方法,括号中添加的多项元素用列表格式,不能直接添加多个元素。
odd={1,3,5,7,9}
b=[0,2,4,6,8]
even=set(b)
even.add(10)
print(even)
integer=odd.union(even)
integer.update([11,12,13,14,15])
print(integer)

在这里插入图片描述

  • 删除元素
    在集合中删除单个元素可以用remove(),也可以使用pop()命令,不过pop()命令有返回值;清空一个集合可以用clear(),清空后返回一个空集合;使用del()命令可以删除一个集合,删除后输出该集合将出现错误。
odd={1,3,5,7,9}
b=[0,2,4,6,8]
even=set(b)
even.add(10)
print(even)
integer=odd.union(even)
integer.update([11,12,13,14,15])
integer.remove(11)
print(integer)
c=integer.pop()
print(c)
print(integer)
integer.clear()
print(integer)
del(integer)
print(integer)

在这里插入图片描述

  • 关系测试操作
    对集合进行关系测试操作有许多常用的函数,也可以使用in/not in来判断集合中的元素是否存在。
函数名作用
intersection()去交集
union()取并集
difference()取差集
issubset()判断是否为子集
issuperset()判断是否为超集
sysmetric_difference()求对称差集,类似于c^d
odd={1,3,5,7,9}
b=[0,2,4,6,8]
even=set(b)
a=odd.intersection(even)
print(a)
c=odd.union(even)
print(c)
d={1,2,3,4,5}
e=odd.difference(d)
print(e)
f={1,3}
print(e.issubset(odd))
print(odd.issuperset(e))
h=e.symmetric_difference(f)
print(h)

在这里插入图片描述

判断语句

python中新增的语法成分是冒号;python中语句的表达式可以不用括号括起;终止语句不需要分号,终止行就是终止语句;python语句通过缩进来确定代码的开头结尾,缩进的结束意味着代码块的结束。

  • 判断语句的格式
    • 常用的判断语句为if…else条件判断语句,其中else为可选语句,当需要在条件不成立的时候执行内容可以执行相关语句。也可以采用复合语句的方法,复合语句=首行+“:”+缩进语句。
# coding utf-8
# if 判断语句:
#     执行语句
# if 判断语句:
#     执行语句
# else:
#     执行语句
  • elif语句,可以检查多个表达式的真值。不用于if…else语法,if…elif中可以由多个elif的判断语句(可以用if…elif来模仿传统的switch…case语句)
score=int(input("请您输入你的成绩:"))
if score>90:
    print("您的成绩等级为A")
elif score<=90 and score>80:
    print("您的成绩等级为B")
elif score <= 80 and score >60 :
    print("您的成绩等级为C")
else:
    print("您的成绩等级为D")

在这里插入图片描述

三目表达式

在C语言中,三目表达式为:判断条件(返回布尔值)?为真时的结果:为假时的结果;
在python中(注意python不支持?和:),三目表达式为:为真时的结果 if 判断条件 else 为假时的结果。

x=int(input("若要为该列表添加元素输入1:"))
num=[1,3,5,7,9]
num.append([2,4,6,8]if x==1 else [])
print(num)

在这里插入图片描述
np.where()格式为:np.where(判读条件,为真时的处理,为假时的处理)。

循环语句

  • for
    for循环是python中通用的序列迭代器,可以遍历任何有序的序列序列对象内的元素。for语句可以用于字符串,列表,元祖,其他内置可迭代对象。
# for <target> in <objects>:
#     <statements>
#     if <test>: break
#     if <test>: continue
# else:
#     <statements>
  • range()函数
    用于返回一系列连续增加的整数,可作为for中的索引。
  • zip()函数
    返回并行元素元祖的列表,可用作for中遍历整个序列。zip可以接受任何类型的序列并且可以有两个以上参数。当参数长度不同时,zip会以最短序列的长度为准截断所得到的元祖。还可以利用zip函数构造字典。
l1=[1,3,5,7,9]
l2=[0,2,4,6,8]
for i in zip(l1,l2):
    print(i)

在这里插入图片描述

l1=['even1','even2','even3','even4','even5']
l2=[0,2,4,6,8]
a=dict(zip(l1,l2))
print(a)

在这里插入图片描述

  • enumerate()函数
    相比于range()仅能产生字符串中元素的偏移值,enumerate()函数既可以产生偏移值也可以产生偏移值的元素。
p='pythpn'
for (offset,item) in enumerate(p):
    print(offset,item)

在这里插入图片描述

  • while
    首行及测试表达式,有一列或多列缩进语句的主体以及一个可选的else部分(在条件语句为false时执行else语句块)
    使用while循环时,要注意条件语句的设置,只要当条件语句为真时,该循环就会一直执行下去,若条件语句为永真时,会出现无限循环的情况(当出现无限循环的情况时可以采用Ctrl+C来终止循环)
count=0
while count<9
	print(count)
	count=count+1
else:
	print('计数已完成')

在这里插入图片描述

  • break,continue,pass
    • 跳出最近所在的循环,指跳过整个循环语句。循环主体底部加break语句可以代替do…while语句的功能。可以出现在while或for循环主体的任意地方,但通常会进一步嵌套在if语句中
y=int(input("请输入一个整数:"))
x=y//2
while x>1
	if y%x==0:
		print(y,"has factor",x)
		break
	x-=1
else:
	print(y,"is prime")

在这里插入图片描述

  • 调到最近所在循环的开头出,来到循环的首行,可以避免语句嵌套。可以出现在while或for循环主体的任意地方,但通常会进一步嵌套在if语句中。
x=[1,2,3,4,5,6,7,8,9,10]
i=0
while i<10:
    if x[i]%2!=0:
        i=i+1
        continue
    else:
        print(x[i],end='')
        i=i+1

在这里插入图片描述

  • 无运算的空占位语句,当语法需要语句且没有实用的语句写时可以使用pass语句。通常用于为复合语句编一个空的主体。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值