数据类型
Python有六个标准的数据类型:
- Numbers(数字)
- String(字符串)
- List(列表)
- Tuple(元组)
- Set(集合)
- Dictionary(字典)
分类
- 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组)
- 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)
Numbers包含int
,double
,complex
。
- Python可以同时为多个变量赋值,如a, b = 1, 2。
- 一个变量可以通过赋值指向不同类型的对象。
- 数值的除法包含两个运算符:/返回一个浮点数,// 返回一个整数(向下取整)。
- 在混合计算时,Python会把整型转换成为浮点数。
- **为乘方。
List为最常用的数据结构,有序的对象集合,用[]
标识:
list = ['1', '2', '3', '4', '5']
list1 = ['6', '7']
print(list) # ['1', '2', '3', '4', '5']
print(list[0]) # 1
print(list[0:3]) # ['1', '2', '3']
print(list[3:]) # ['4', '5']
print(list * 2) # ['1', '2', '3', '4', '5', '1', '2', '3', '4', '5']
print(list + list1) # ['1', '2', '3', '4', '5', '6', '7']
Tuple为python元组,类似于list
,但是用()
标识,内部用逗号分隔,不能二次赋值,只读,相当于只读列表。
tuple = ('1', '2', '3')
list = ['1', '2', '3']
tuple[1] = '0' # error
list[1] = '0'
Set为python集合,无重复元素。用{}
标识。可以使用大括号 { }
或者 set()
函数创建集合,注意:创建一个空集合必须用 set()
而不是 { }
,因为{ }
是用来创建一个空字典。
set0 = {1, 3}
set1 = set()
set2 = {}
print(set0) ## {1, 3}
print(set1) ## set()
print(set2) ## {}
print(type(set1)) ## <class 'set'>
print(type(set2)) ## <class 'dict'>
Dictionary为python字典,无序的对象集合。key-value模式,通过key值来存取,用{}
标识。
dict = {'1': '一', '2': '二'}
dict['3'] = '三'
print(dict.get('1')) # 一
print(dict) # {'1': '一', '2': '二', '3': '三'}
print(dict.keys()) # dict_keys(['1', '2', '3'])
print(list(dict.keys())) # ['1', '2', '3']
print(dict.values()) # dict_values(['一', '二', '三'])
print(list(dict.values())) # ['一', '二', '三']
dict.keys()
返回了一个字典的所有key值,但这个结构并不是list
,需要用list(dict.keys())
转换,才可以获取到list
类型。
python数据类型转换:
print(int('1')) ## int转换类型
print(float('1.1')) ## float类型转换
print(str(123)) ## str类型强制转换
class User:
def __init__(self, index, name):
self.index = index
self.name = name
def __str__(self):
return str(self.index) + " - " + self.name
user = User(110, "leekari") ## 创建user对象
print(user) ## 110 - leekari
## repr(obj) repr() 函数将obj转化为供解释器读取的形式
print(repr(user)) ## <__main__.User object at 0x10ca67358>
num = 1
string = 'num == 1'
## 用来执行一个字符串表达式,并返回表达式的值
print(eval(string)) ## 返回True
list0 = [1, 2, 3]
set0 = {1, 2, 3}
dict0 = {1: 'a', 2: 'b', 3: 'c'}
tuple0 = (1, 2, 3)
tuplex = tuple(list0) ## (1, 2, 3)
tuplex = tuple(set0) ## (1, 2, 3)
## 字典转换为元组时,将dict.keys()的list转换为元组
tuplex = tuple(dict0) ## (1, 2, 3)
listx = list(set0) ## [1, 2, 3]
## 只保留dict.keys()的list
listx = list(dict0) ## [1, 2, 3]
listx = list(tuple0) ## [1, 2, 3]
list1 = [1, 1, 1, 2]
## set去重
set(list1) ## {1, 2}
chr(97) ## a
ord('a') ## 97
hex(15) ## 0xf
oct(9) ## 0o11
tupleList = [('1', '2')]
dict(tupleList) ## 类型转换为字典时,需要的参数为元组数组,即tuple list,并且tuple中包含的参数数量为2
##error
tuple = [('1', '2', '3')]
print(dict(tuple)) ## ValueError: dictionary update sequence element #0 has length 3; 2 is required
支持给多个变量赋值
a = b = c = 1
a, b, c = 1, "b", 'c'
注释类型
单行注释:# ...
#开头
多行注释:'''...'''
或者"""..."""
三个单引号或者三个双引号
运算符
:=
海象运算符,可在表达式内部为变量赋值。Python3.8 版本新增运算符。
位运算符:
-
&
按位与运算,1&1 => 1
,1&0 => 0
,0&1 => 0
,0&0 => 0
-
|
按位或运算,1|1 = >1
,1|0 => 1
,0|1 => 1
,0|0 => 0
-
^
按位异或运算,1^1 => 0
,0^1 = >1
,1^0 => 1
,0^0 => 0
-
~
按位取反运算,~1 => 0
,~0 => 1
-
<<
左移动运算,向左移动,高位丢弃,低位补0 -
>>
右移动运算,向右移动
## 0 => 00000 , 15 => 01111
x, y = 0, 15
## 00000 & 01111 => 0000
print(x & y) ## 0
## 00000 | 01111 => 01111
print(x | y) ## 15
## 00000 ^ 01111 => 01111
print(x ^ y) ## 15
## ~ 01111 => 10000 ???
print(~ y) ## -16
## 01111 << 1 => 11110
print(y << 1) ##30
## 01111 >> 1 => 00111
print(y >> 1) ## 7
逻辑运算符:
-
and
A and B, A = true, 则返回B, A = false, 则返回A -
or
A or B, A = true,则返回A,A=false,则返回B -
not
not A, A=true,则返回false,A=false,则返回true
a, b, c = 1, 2, 0
print(a and b) ## 2
print(c and b) ## 0
print(a or b) ## 1
print(c or b) ## 2
print(not a) ## False
print(not c) ## True
成员运算符:
可以用于str、list、tuple、set、dict(只计算
dict.keys()
)
-
in
在指定序列中包含,返回True,否则False -
not in
在指定序列中不包含,返回True,否则返回False
list1 = [1, 2, 3, 4, 5]
a, b = 1, 10
str1 = "asdfghj"
print(a in list1) ## True
print(b in list1) ## False
print(a not in list1) ## False
print("a" in str1) ## True
tuple1 = (1, 3, 5)
set1 = {1, 3, 5}
dict1 = {1: 'a', 2: 'b'}
print(1 in tuple1) ## True
print(1 in set1) ## True
print(1 in dict1) ## True
print('a' in dict1) ##False
身份运算符:
-
is
A is B,引用相同的对象但会True,否则返回False is not
class User:
def __init__(self, index, name):
self.index = index
self.name = name
def __str__(self):
return str(self.index) + " - " + self.name
user1 = User(1, "lee")
user2 = User(2, "kari")
user3 = user1
print(user1 is user2) ## False
print(user1 is user3) ## True
print(user1 is not user2) ##True
a, b = 1, 1
print(a is b) ##True
## id(obj) 获得对象obj的内存地址
print(id(a) is id(b)) ##False
Tips:
s 与 == 区别:is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。
运算符优先级:指数运算符优先级最高,其他普通运算符及位运算符与其余语言相同,身份运算符(is,is not),成员运算符(in, not in),逻辑运算符(not,and,or)