python_3 基础(2)

变量

定义变量 A=[1,2,3,4]  
变量取名要有意义,可读性要强  list=[1,2,3,4]  
变量名可以由字母/数字/下划线构成,但首字符不得为数字  
系统保留关键字不能用在变量名中  名词为保留关键字  如and/if/import等
变量名区分大小写
变量内容没有类型限制,可以为数字/字符串/列表/字典等
如  
A=[1,2,3,4]  
B=[1,2,3]  
C=[1,2,3,4]  
A*3 + B + C  
[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 1, 2, 3, 4]

例子:
>>> a=1
>>> b=a
>>> a=3
>>> print(b)
1
>>> a=[1,2,3]
>>> b=a
>>> a[0]='1'
>>> print(b)
['1', 2, 3]
简单说下以上两个的区别,数字是int,称之为值类型,列表为list,称之为引用类型,引用类型是可变的,而值类型是不可变的
值类型:int/str/tuple
引用类型:list/set/dict

b='hello'
>>> id(b)
2461227058864
>>> b=b+'python'
>>> id(b)
2461227058800
此处并不是改变了str的值,而是生成了一个新的值,再赋值给b
id()方法可以查看变量的内存地址

a=[1,2,3]
>>> id(a)
2461227317768
>>> a[0]='1'
>>> id(a)
2461227317768
由这个例子可以看到,列表是可变的,内容变更后,内存地址是不变的

>>> b=[1,2,3]
>>> b.append(4)
>>> b
[1, 2, 3, 4]
列表可以追加元素

>>> c=(1,2,3)
>>> c.append(4)
Traceback (most recent call last):
  File "<pyshell#26>", line 1, in <module>
    c.append(4)
AttributeError: 'tuple' object has no attribute 'append'
元组不允许追加

>>> a=(1,2,3,[1,2,4])
>>> a[2]
3
>>> a[3][2]
4
访问元组内列表的值

>>> a=(1,2,3,[1,2,4])
>>> a[2]='3'
Traceback (most recent call last):
  File "<pyshell#31>", line 1, in <module>
    a[2]='3'
TypeError: 'tuple' object does not support item assignment
>>> a[3][2]='4'
>>> a
(1, 2, 3, [1, 2, '4'])
修改元组内列表的值

运算符

83452-diyoozxghyl.png
09335-eznhpgy6a96.png

算数运算符

>>> 3-1
2
>>> 3/2
1.5
>>> 3//2
1
>>> 5%2
1
>>> 2**2
4
>>> 2**5
32
>>> [1,2,3]*3
[1, 2, 3, 1, 2, 3, 1, 2, 3]

赋值运算符

>>> c=1
>>> c+=1
>>> c
2
>>> c-=1
>>> c
1
>>> b=2
>>> a=3
>>> b+=a
>>> b
5
>>> b*=a
>>> b
15

比较(关系)运算符

字符串的比较是根据 ASCII 做判断
字符串有多个元素,如'abc'>'abd',则先比较第一个元素,再到第二个元素,以此类推,列表/元组的比较同理

>>> 1==1
True
>>> 1>1
False
>>> 1!=2
True
>>> 1>=1
True
>>> 1<=1
True
>>> b=1
>>> b=b+True
>>> b
2
>>> int(True)
1
>>> 'a'>'b'
False
>>> ord('a')
97
>>> ord('b')
98
>>> 'abc'<'abd'
True

逻辑运算符

逻辑运算符操作的类型和返回的结果都是布尔类型
and(且)/or(或)/not
int/float,当为0的时候被认为是False,非0的时候被认为是True
字符串,空值的时候认为是False,否则被认为是True
列表,空列表认为是False,非空则被认为是True
tuple/set/dict与列表同理

>>> True and True
True
>>> True and False
False
>>> True or True
True
>>> True or False
True
>>> not True
False
>>> not False
True
>>> 1 and 2
2
>>> 1 and 0
0
>>> 0 and 1
0
>>> 0 or 1
1
>>> 1 or 0
1
>>> 1 or 2
1

成员运算符

判断一个元素是否在另外的一组元素里
成员运算符的返回值依然是布尔值
列表/集合/元组/字符串均适用于判断其中一个元素
但是字典,只适用于判断key值

>>> 1 in [1,2,3,4,5]
True
>>> 1 not in [1,2,3,4,5]
False
>>> b='h'
>>> b in 'hello'
True
>>> b=2
>>> b in {1,2,3,4,5}
True
>>> b in (1,2,3,4,5)
True
>>> b='a'
>>> b in {'c':1}
False
>>> b in {'a':1}
True
>>> b=1
>>> b in {'a':1}
False

身份运算符

关系运算符比较的是两个变量的值是否相等,身份运算符比较的是两个变量的身份是否相等,身份可以理解为内存地址
对象的三个特征,值(id)/身份(value)/类型(type)

>>> a=1
>>> b=2
>>> a is b
False
>>> a='hello'
>>> b='world'
>>> a is b
False
>>> c='hello'
>>> a is c
True
>>> a=1
>>> b=1
>>> a is b
True
>>> a=1
>>> b=1.0
>>> id(a)
140713575608576
>>> id(b)
2461226426064
>>> a==b
True
>>> a is b
False

# 集合是无序的,所以无论 123 还是 213 都不会影响最终的值
# 查看两个集合的内存地址,可以看到是不一样的
>>> a={1,2,3}
>>> b={2,1,3}
>>> a==b
True
>>> a is b
False
>>> id(a)
2461227070408
>>> id(b)
2461227070184

# 元组是序列,是有序的,序列会影响最终结果
>>> c=(1,2,3)
>>> d=(2,1,3)
>>> c==d
False
>>> c is d
False
>>> id(c)
2461227261448
>>> id(d)
2461227258968

# 类型的判断
>>> a = 'hello'
>>> isinstance(a,str)
True
>>> isinstance(a,(int,str,float))
True
>>> isinstance(a,(int,float))
False

位运算符

把数字当作二进制数进行运算

& (按位与)  
| (按位或)  
^ (按位异或)  
~ (按位取反)  
<< (左移动)  
>> (右移动)  

>>> a=2
>>> b=3
>>> a&b
2
如:
a&b
转换为二进制
1 0
1 1
按位与之后
1 0
转换为十进制之后
2

>>> a = 2
>>> b = 3
>>> a | b
3
如:
a&b
转换为二进制
1 0
1 1
按位或之后
1 1
转换为十进制之后
3
pythonfoundationstudiedpython基础python笔记python学习

我来吐槽

*

*