[python日记]--数据类型

235 阅读3分钟

数据类型

  1. String,字符串,不可变
  2. Number,数字, 不可变
  3. List,列表
  4. Tuple,元组,不可变
  5. Set,集合
  6. 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() 以列表返回字典中的所有值