Python数据类型
2021/6/3 周四
学习内容: Python数据类型、Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Set(集合)、Dictionary(字典)
刚接触Python,主要是看 菜鸟教程、w3school 网站,以及电子工业出版社出版的Python编程入门指南上册的教材,并根据自己的情况对重点内容做的笔记。
如有错误,欢迎在评论区指出,非常感谢!
一、数据类型
1. 标准数据类型
Python3中有六个标准数据类型:
Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Set(集合)、Dictionary(字典)
其中不可变数据(3个):Number、String、Tuple;
可变数据(3个):List、Dictionary、Set;
2. 构造函数
Python中的变量不需要声明类型,在为变量赋值时,就自动设置了数据类型。
x = 525
print(x+"123")
x默认是int,这样写是会报错的。
如果希望指定数据类型,可以使用以下构造函数:
x = str(525)
print(x+"123")
这样就不会报错了
3. 获取数据类型
可以使用 type() 函数获取任何对象的数据类型
x = 525
print(type(x))
>>> 输出
>>> <class 'int'>
另外,还可以用 isinstance() 带上数据类型来判断是否是这个类型的,返回True或False:
x = 525
print(isinstance(x,str))
>>> 输出
>>> False
区别在于,在判断对象的类型时,type() 不会认为子类是一种父类类型,而isinstance() 会认为子类是一种父类类型。
二、Number(数字)
数字类型包括int、float、complex三种数值和bool布尔值
1. 数值
- int整数,是完整的数字,正数或负数,没有小数,长度不限。
- float浮点数,是包含小数的正数或负数,也可以是带有“e”的科学数字,表示 10的幂。比如"15E2"、“-49.8e100”。
- complex复数,与数学中的复数一样,都是由实部和虚部组成,用 “j” 作为虚部编写。比如"2+3j"、“-3j”。
类型转换
可以使用 int()、float() 和 complex() 构造函数,将数字从一种类型转换为另一种类型(但是复数无法转换为其他数字类型)。
比如:
int(6.3) 就是 向下取整,结果为6,
float(5) 是后面加个.0,结果为5.0,
complex(3.5) 就是加个+0j,结果为(3.5+0j)。
符合格式的字符串也可以与数值类型互相转换,比如:
int(“2”) 结果为 整数2
float(“4.6”) 结果为 浮点数4.6
complex(“2+3j”) 结果为 复数(2+3j)
str(4.0) 结果为 字符串"4.0"
2. 布尔值
Python布尔类型 bool 主要用来表示真或假的值。
比如比较两个值时,将对表达式求值,返回布尔值答案True或 False:
如 8>7 为True, 8<7 和 8==7 都为False。
布尔值可以转换为数值,True表示1, False表示0。
bool() 函数可评估任何值,只有一个参数,并根据这个参数的值返回 True或 False。
- 对数字使用 bool() 函数时,0返回False,任何其他值都返回True。
- 对字符串使用 bool() 函数时,对于没有值的字符串(None或""空字符串)返回False,否则返回True。
- bool() 函数对于空的列表、字典和元组返回False,否则返回True。
总的来说,其实大多数值都是True的,被评估为False很少,比如:
bool(False)
bool(None)
bool(0)
bool("")
bool(())
bool([])
bool({
})
(0是指数值中的0,包括0、0.0和虚数0)
3. 随机数
Python没有 random() 函数来创建随机数,但有一个名为random的内置模块,可用于生成随机数:
导入 random 模块,并显示1到9之间的随机数:
import random
print(random.randrange(1,10))
randrange 左闭右开,不能取到10
另外还有一个 randint 左右都是闭区间,两边极限都可以取到
三、String(字符串)
1. 写法
python中的字符串字面量由单引号或双引号括起。
多行字符串:
也可以使用三个引号(单引号双引号都可以)将多行字符串赋值给变量:
a = """When your dreams come alive you're unstoppable
take a shot chase the sun, find the beautiful"""
b = '''We will glow in the dark turning dust to gold
And we'll dream it possible'''
在结果中,换行符插入与代码中相同的位置。
字符串拼接和复制:
使用 + 加号可以拼接字符串,使用 * 星号并带上需要复制的次数可以复制字符串:
print("Hello"+" World!")
print("Boom" * 5)
>>> 输出:
>>> Hello World!
>>> BoomBoomBoomBoomBoom
转义特殊字符:
还可以使用反斜杠 \ 来转义特殊字符,比如 \n 表示换行:
print("使用\n换行")
>>> 输出:
>>> 使用
>>> 换行
同时,如果必须用到转义格式,但又不希望被转义的话,可以在引号前加上字母r或R:
print(r"使用\n换行")
>>> 输出:
>>> 使用\n换行
2. 访问字符串元素
Python中的字符串是表示unicode字符的字节数组。
但是,Python没有类似char的字符数据类型,单个字符就是长度为1的字符串。
可以用 [ ] 方括号来访问字符串的元素:
a = "Hello, World!"
print(a[1])
需注意,从前往后第一个字符的下标为 0,从后往前数第一个字符的下标为-1。
3. 字符串截取
指定开始索引和结束索引,以冒号分隔,可以截取字符串的一部分。
获取从下标2到下标 5(不包括)的字符:
a = "Hello, World!"
print(a[2:5])
如果使用负的索引,则是从字符串末尾开始切片:
a = "Hello, World!"
print(a[-5:-2])
结果是orl,也就是从下标 -5 到下标 -2(不包括)的字符。
也可以省略一个参数,表示从头开始截到指定位置,或者从指定位置截到底:
a = "Hello, World!"
print(a[:5])
print(a[7:])
print(a[:-1])
print(a[-6:])
>>> 输出:
>>> Hello
>>> World!
>>> Hello, World
>>> World!
4. in / not in
如需检查字符串中是否存在特定短语或字符,可以使用 in 或 not in 关键字,返回True或False。
例如,检查以下文本中是否存在短语 “ina”:
txt = "China is a great country"
x = "ina" in txt
print(x)
结果是True。
5. 字符串常用方法
- len() 返回字符串的长度
- strip() 删除开头和结尾的空白字符
- lower() 返回小写的字符串
- upper() 返回大写的字符串
- replace() 用另一段字符串来替换字符串:
a = "Hello, World!"
print(a.replace("World", "Kitty"))
>>> 输出:
>>> Hello, Kitty!
- split() 在找到分隔符的实例时将字符串拆分为子字符串:
a = "Hello, World!"
print(a.split(","))
>>> 输出:
>>> ['Hello', ' World!']
6. format()和占位符{}
如果用"+"号组合字符串和数字的话会报错,但format()方法,就可以组合字符串和数字。
它接受传递的参数,格式化它们,并将它们放在占位符 {} 所在的字符串中:
age = 25
txt = "My name is Bill, and I am {}"
print(txt.format(age))
可以使用多个占位符来接受多个参数:
quantity = 3
itemno = 567
price = 49.95
myorder = "I want {} pieces of item {} for {} dollars."
print(myorder.format(quantity, itemno, price))
然后参数的位置也可以不按顺序,这就需要在占位符中标明索引表示填入第几个参数,索引从0开始算
quantity = 3
itemno = 567
price = 49.95
myorder = "I want to pay {2} dollars for {0} pieces of item {1}."
print(myorder.format(quantity, itemno, price))
四、List(列表)
1. 写法
List(列表)是 Python中使用最频繁的数据类型,写在方括号 [ ] 之间,并用逗号分隔开多个元素。
Python 没有内置对数组的支持,但可以使用 List 列表代替。
列表可以存放数字、字符串、列表(所谓嵌套)、元组等类型的内容,而且同一个列表中元素的类型都可以不相同。
list = ['abcd', 321, 321, 5.25, 1+1j]
列表允许重复值。
列表是有序的,索引值从前往后第一个元素的索引为 0,从后往前第一个元素的索引为-1。
2. 截取
和字符串一样,列表也可以访问元素和截取,列表被截取后返回一个包含所需元素的新列表。
list = ["number",1,2,3,4,5]
print(list[0])
print(list[2:5])
>>> 输出:
>>> number
>>> [2, 3, 4]
从上还可看出,输出列表单个元素时,如果是字符串,会自动去掉引号。
另外,列表的截取还可以接收第三个参数,参数作用是截取的步长(表示间隔几个数):
list = [1,2,3,4,5,6,7,8,9,10]
print(list[0:9:2])
>>> 输出:
>>> [1, 3, 5, 7, 9]
如果第三个参数为负数,表示逆向读取,可以用于翻转字符串语句:
list = ["he", "is", "Tony"]
print(list[-1::-1])
>>> 输出:
>>> ['Tony', 'is', 'he']
3. 合并列表和重复输出
也同样可以用 + 加号合并多个列表组成新的包含所有元素的列表,
以及用 * 星号重复输出列表:
list1 = ['abcd', 123,