可变不可变类型和if判断

Posted lgh8023

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了可变不可变类型和if判断相关的知识,希望对你有一定的参考价值。

1、可变类型:list,dict

在值改变的情况下,id号不变,也就是说内存地址不变,证明就是在改原来内存空间中的值,即原值可变

2、不可变类型:int、float、str

在值改变的情况下,id号也跟着变了,也就是说内存地址变了,证明不是在改原来内存空间中的值,
而是申请了新的内存空间,产生了新的值,即原值不可变

x=10
print(id(x))
x=11
print(id(x))

x=10.3
print(id(x))
x=11.4
print(id(x))

x="abc"
print(id(x))
x="aBc"
print(id(x))

l1=[111,"aaaa"]
print(id(l1))
l1[0]=222222
print(l1)
print(id(l1))

dic={‘k1‘:111,‘k2‘:222}
print(id(dic))
dic[‘k1‘]="abc"
print(dic)
print(id(dic))

字典的value可以是任意类型,但是字典的key必须是不可变类型

dic={1111111:"abc","k2":"def",3.1:‘aaa‘}
print(dic[1111111])


下面写法推荐使用列表代替
dic={0:‘egon‘,1:"egon1",2:"egon3"}

print(dic[0])
print(dic[1])
print(dic[2])

了解:不可哈希类型就是可变类型,可哈希类型就是不可变类型

dic={[1,2,3]:"abc"}

1、增量赋值

age=18
age += 1
print(age)

2、链式赋值

x=10
y=x
z=y

z = y = x = 10
print(x, y, z)
print(id(x), id(y), id(z))

3、交叉赋值

m = 111
n = 222

temp=m
m=n
n=temp
m, n = n, m
print(m, n)

4、解压赋值

salaries = [1.1, 2.2, 3.3, 4.4, 5.5]
mon0 = salaries[0]
mon1 = salaries[1]
mon2 = salaries[2]
mon3 = salaries[3]
mon4 = salaries[4]

mon0, mon1, mon2, mon3, mon4 = salaries
print(mon0)
print(mon1)
print(mon2)
print(mon3)
print(mon4)

变量名的个数必须与包含的值的个数相同,多一个不行,少一个也不行

mon0, mon1, mon2, mon3, mon4, mon5 = salaries
mon0, mon1, mon2, mon3 = salaries

mon0, mon1, mon2, *_ = salaries
print(mon0)
print(mon1)
print(mon2)
print(_)

*_, x, y, z = salaries
print(x)
print(y)
print(z)

x, *_, z = salaries
print(x)
print(z)


dic={"k1":111,"k2":222}
del dic[‘k1‘]
print(dic)
dic["kkk"]=111
print(dic)

对于字典来说解压赋值取出来的是字典的key

dic = {"k1": 111, "k2": 222}
x, y = dic
print(x, y)


了解
a,b,c,d,e="hello"
print(a,type(a))
print(b)
print(c)
print(d)
print(e)

身份运算is与==

==判断的是值是否相等

x = [‘a‘, ‘b‘]
y = [‘a‘, ‘b‘]
print(x == y)

is判断的是id是否相等

print(id(x))
print(id(y))
print(x is y)

分析:
is判断的结果为True,即二者的id一样,即二者内存地址一样,即二者就是一个东西,即值一定相等
如果==判断的结果为True,即二者的值一样,那么二者的内存地址可能不一样

x=None
y=None

print(x==None)

print(x is None)
print(x is y)

print((10 > 3) is True)
print((10 > 3) == True)
x=True
y=True
z=True
print(id(x))
print(id(y))
print(id(z))

结论:如果要变量一个变量是否等于None、True、False,推荐使用is去判断

x = 10
y = 10
print(x is y)
print(x == y)
print(x == 10)
print(x is 10) # 不要这么用

道可道非常道,名可名非常名

"""

1、什么是if判断

? 判断 条件1 并且 条件2:
? 做什么事。。。
? 否则:
? 做什么事。。。

2、为何要有if判断

? 为了控制计算机能够像人一样去完成判断的过程

3、如何用if判断

"""

1、介绍

print(‘start....‘)
if 3 != 3 and 10 > 8:
    print("条件成立1")
    print("条件成立2")
    print("条件成立3")
else:
    print("条件不成立1")
    print("条件不成立2")
    print("条件不成立3")
print(‘end....‘)

if判断完整的语法
"""
if 条件1:
    子代码块1
elif 条件2:
    子代码块2
elif 条件3:
    子代码块3
...
else:
    子代码块
"""

2、必须要有的是if,只有一个if是可以的

inp_name=input(‘你的名字: ‘)
if inp_name == "egon":
    print(‘输入正确‘)

print(‘其他代码‘)

3、if+elif

inp_name=input(‘你的名字: ‘)
if inp_name == "egon":
    print(‘您的身份是超级vip‘)
elif inp_name == "张三":
    print(‘您的身份是钻石vip‘)
elif inp_name == "李四":
    print(‘您的身份是铂金vip‘)

print(‘其他代码‘)

4、if+else

inp_name = input(‘你的用户名: ‘)
inp_pwd = input(‘你的密码: ‘)

if inp_name == "egon" and inp_pwd == "123":
    print(‘登录成功‘)
else:
    print("刚刚输入的用户名或密码错误")

print(‘其他代码‘)

5、if+elif+else

"""
如果:成绩>=90,那么:优秀

如果成绩>=80且<90,那么:良好

如果成绩>=70且<80,那么:普通

其他情况:很差
"""

score = input("请输入您的成绩: ")
score = int(score)
if score >= 90:
    print("优秀")
elif score >= 80:
    print("良好")
elif score >= 70:
    print("普通")
else:
    print("很差")

补充

age = 19
age >= 18 and age <= 20
print(20 >= age >= 18)
print(18 <= age <= 20)
if判断嵌套if
print(‘ok0‘)
if 10 > 3:
    if 1 == 1:
        print(‘ok1‘)
        print(‘ok2‘)
    print(‘ok3‘)
print(‘ok4‘)








以上是关于可变不可变类型和if判断的主要内容,如果未能解决你的问题,请参考以下文章

python基础04——运算+if判断

python入门之类型条件运算符流程控制之if判断

Python基础(可变与不可变类型 / is和== / 特殊属性)

java中一个类是不可变类的条件是啥?求详细解答。

如何使用分支逻辑构造不可变数据类型的实例?

python可变类型和不可变类型