数据类型
- String,字符串,不可变
- Number,数字, 不可变
- List,列表
- Tuple,元组,不可变
- Set,集合
- Dictionary,字典
Q: List,Tuple,Set,Dictionary是什么玩意儿?
A: List就和js中的数组(Array)类似,列表中元素的类型可以不相同。表示为['him', 25, 100, 'her']
Tuple和List相似,元组的元素不能修改。 表示为 (1991, 2014, 'physics', 'math')
Set和ES6中的差不多,是一个无序不重复元素的集。表示为 {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'}
Dictionary和js中的对象(Object)类似,无序键值对。表示为{ 'Jack':1557, 'Tom':1320, 'Rose':1886}
Q: 这个不可变是如何定义的呢?
A: 变量值改变,变量地址必须改变
Q: 怎么打印内存地址?
A: 内置函数id()
Q: 怎么打印数据类型?
A: 内置函数type()
Q: ==怎么发现没有布尔类型?
A: Python2 中是没有布尔型的,它用数字 0 表示 False,用 1 表示 True。到 Python3 中,把 True 和 False 定义成关键字了,但它们的值还是 1 和 0,它们可以和数字相加。
细说细说
1. String
s = "ddd" # 或者 s = str("ddd")
sid = id(s)
s = 'x1x222'
sid2 = id(s)
print(sid == sid2) #False
print(s[0:2]) # 截取字符串-->1
print(s[-2:-1]) # 截取字符串-->2
print(s[1:]) # 切片 1x222
2. Number
# python数字类型有以下子集
a,b,c,d = 20,5.5,True,2+3j # 多个变量赋值
print(type(a),type(b),type(c),type(d)) # a,b,c,d依次为int,float,bool,complex
# 也可以用内置函数isinstance()进行类型判断
isinstance(a,int)
# isinstance()第二个参数可以是元组
isinstance(a,(str,dict,list)) # 查看a是否是元组(str,dict,list,tuple)的一个
Q: 那么type() 和 isinstance()的区别呢?
A: 老规矩类比一下js中的typeof和Instaceof。在js中typeof只能准确判断基础数据类型(null为object),
应用类型都是object(函数为function)。Instaceof就是判断判断一个变量是否属于某个对象的实例。
type()不会认为子类是一种父类类型,不考虑继承关系,isinstance()相反。
3. List
# 定义list的方式
list1 = ["Chorme","Firfox","Safari"]
list2 = list([1, 2, 3])
arr = [1, 2, 3]
copy_arr = arr[:]
print(id(arr) == id(copy_arr)) # False 得知切片方式实际行为是拷贝列表
4. Tuple
t1 = (1,) # 当创建的元组只有一个元素时候需要加","
t2 = tup([1,2,3,4])
t3 = t1 + t2 # 合并元组
print(t2[1]) # 读取元组元素
del t2 # 删除元组
# 内置函数包括
# len(tuple) 计算元组元素个数。
# max(tuple) 返回元组中元素最大值。
# min(tuple) 返回元组中元素最小值。
# tuple(seq) 将列表转换为元组。
5. Set
s1 = set([1,1,2,3,4])
print(list(s1)[0]) # set不带有索引需要转list取索引
# 内置函数包括
# add() 向集合添加元素
# remove() 向集合移除元素
# update() 更新集合
# len() 返回集合的长度
# copy() 返回一个集合的浅复制
# clear() 删除集合内所有元素
6. Dictionary
d = {'name':'2U','age':24}
d2 = dict(name="a", age=12)
d3 = dict(zip(['name', 'age'], ['han', '16']))
d4 = dict([('name', 'dd'), ('age', 18)])
# 内置函数
# clear() 删除字典内所有元素
# copy() 返回一个字典的浅复制
# get() 返回指定键的值
# item() 以列表返回可遍历的(键, 值) 元组数组
# keys() 以列表返回一个字典所有的键
# update() 把新字典的键/值对更新到dict里
# values() 以列表返回字典中的所有值