【一】八大基本数据类型
-
数字类型
-
整数类型(int)
-
浮点类型(float)
-
-
字符串类型(str)
-
列表类型(list)
-
字典类型(dict)
-
布尔类型(bool)
-
元组类型(tuple)
-
集合类型(set)
【1】数字类型
(1)整数类型
-
整数类型用于表示整数,广泛用于表示计数、索引等整数值
-
在python中,整数类型的定义是直接赋予一个整数值
age = 18 # 查看变量名 print(age) # 18 # 查看地址 print(id(age)) # 1853270917904 # 查看数据类型 print(type(age))#<class 'int'>
-
整数型可以参与各种数学运算,加减乘除等
(2)浮点类型
-
浮点类型用于表示带有小数点的部分,适用于需要更精确数值表示的情况
-
就是通过数字后面添加小数点
age = 1.88 print(age)#1.88 print(id(age))#1776489613616 print(type(age))#<class 'str'>
[3]数字类型的应用
-
整数和浮点数可以进行常见的数学运算,包括加法、减法、乘法、除法等。
-
str = 1.88 int = 88 age = str + int print(age) # 89.88 print(id(age)) # 2314768730832 print(type(age)) # <class 'float'>
-
我们可以使用比较运算符(如
<
、>
、<=
、>=
)来比较数字的大小,得到布尔类型的结果 -
str = 1.88 int = 88 compare = str > int print(compare) # False print(id(compare)) # 140706766773128 print(type(compare)) # <class 'bool'> 结果是False(不正确)】
[2]字符串类型
-
字符串用于表示文本信息,是一种非常重要的数据类型,用于处理文字,字符等信息
(1)单行字符串
-
字符可以使用单引号,双引号,三引号进行定义
-
Name = 'dream' Name = "dream" Name = '''dream''' Name = """dream"""# (当左边有赋值符号和遍历名的时候,它就是字符串) 上面是例子
-
引号的嵌套需要注意,外层是单引号时,内层应使用双引号
-
如果需要在字符串中包含引号,可以灵活运用不同类型的引号
(2)多行字符串
-
通过三引号(单引号或双引号)可以定义多行字符串,方便表示包含换行的文本内容
#三引号支持多行文本内容 msg_1 = ''' 天下只有两种人。比如一串葡萄到手,一种人挑最好的先吃,另一种人把最好的留到最后吃。 照例第一种人应该乐观,因为他每吃一颗都是吃剩的葡萄里最好的; 第二种人应该悲观,因为他每吃一颗都是吃剩的葡萄里最坏的。 不过事实却适得其反,缘故是第二种人还有希望,第一种人只有回忆, ''' msg_1 = """ 天下只有两种人。比如一串葡萄到手,一种人挑最好的先吃,另一种人把最好的留到最后吃。 照例第一种人应该乐观,因为他每吃一颗都是吃剩的葡萄里最好的; 第二种人应该悲观,因为他每吃一颗都是吃剩的葡萄里最坏的。 不过事实却适得其反,缘故是第二种人还有希望,第一种人只有回忆, """
(3)使用
-
字符串只能进行加 和 乘
-
相加
greeting = "Hello" name = "Dream" message = greeting + ", " + name + "!" print(message) # Hello, Dream!
-
相乘
-
就是让你的变量值相乘几次
divider = "-" * 20 print(divider) # --------------------
(4)索引取值
-
字符串属于序列类型,所谓序列,指的是一块可存放多个值的连续内存空间,这些值按一定顺序排列,可通过每个值所在位置的编号(称为索引)访问它们。
msg = 'Hello World' print(len(msg)) # 11 # 取索引为 0 的位置的元素 print(msg[0]) # H # 取索引位置为 10 的元素 (上面打印的长度为11,但是我们是从 0 开始计数的,所以是 11-1=10) print(msg[10]) # d
-
Python 还支持索引值是负数,此类索引是从右向左计数,换句话说,从最后一个元素开始计数,从索引值 -1 开始,如图 所示。
msg = 'Hello World' print(len(msg)) # 11 # 取索引为 -1 的位置的元素 print(msg[-1]) # d # 取索引位置为 -11 的元素 (上面打印的长度为11,但是我们是从 -1 开始计数的,所以是 -11) print(msg[-11]) # H
(5)%输出
-
name = 'dream' age = 18 height = 175.5 print('My name is %s;My age is %d;My height is %f' % (name, age))#My name is dream;My age is 18;My height is 175.5
-
在上例中,
%s
和%d
是占位符,分别表示字符串和整数,而(name, age)
是传入这两个占位符的实际值。 -
占位符类型
-
%s
:字符串 -
%d
:整数 -
%f
:浮点数 -
%x
:十六进制整数
-
(6)formate 输出
-
使用
format
方法进行格式化输出,通过花括号{}
表示占位符,然后调用format
方法传入实际值
name = "Dream" age = 18 # 格式化输出语法三 : formate print("My name is {}; My age is {}".format(name, age)) # My name is Dream; My age is 18
-
在这个例子中,
{}
是占位符,它会按顺序依次填充传入format
方法的值
(7)f + {} 输出
-
使用 f-string(f +
{}
)进行格式化输出,通过在字符串前加上f
或F
前缀,然后在字符串中使用{}
表示占位符,并在{}
中直接引用变量。
name = "Dream" age = 18 # 格式化输出语法二 : f + {} print(f"My name is {name}; My age is {age}") # My name is Dream; My age is 18
(8)字符串的转义
-
在字符串中,转义字符用于表示一些特殊字符或执行一些特殊操作,常用的转义字符如下:
转义字符 | 说明 |
---|---|
\n | 换行符,将光标位置移到下一行开头。 |
\r | 回车符,将光标位置移到本行开头。 |
\t | 水平制表符,也即 Tab 键,一般相当于四个空格。 |
\a | 蜂鸣器响铃。注意不是喇叭发声,现在的计算机很多都不带蜂鸣器了,所以响铃不一定有效。 |
\b | 退格(Backspace),将光标位置移到前一列。 |
\ | 反斜线 |
' | 单引号 |
" | 双引号 |
\ | 在字符串行尾的续行符,即一行未完,转到下一行继续写。 |
# 换行符 print("Hello\nWorld") # Hello # World # 制表符 print("Name\tAge") # Name Age # 反斜线 print("This is a backslash: \\") # This is a backslash: \ # 单引号 print("I'm a programmer.") # I'm a programmer. # 双引号 print("He said, \"Hello.\"") # He said, "Hello." # 回车符与退格符 print("One\rTwo\bThree") # Two Three
[3]列表类型
-
存取多个相同属性的值,并且方便存取
-
如果我们需要用一个变量记录多个学生的姓名,用数字类型是无法实现,字符串类型则可以记录下来
# 字符串类型 stu_names=’张三 李四 王五’ # 列表类型 names_list = ['张三', '李四', '王五']
-
存的目的是为了取,此时若想取出第二个学生的姓名实现起来相当麻烦
-
而列表类型就是专门用来记录多个同种属性的值(比如同一个班级多个学生的姓名、同一个人的多个爱好等),并且存取都十分方便
[1】索引取值
-
列表类型是用索引来对应值,索引代表的是数据的位置,从0开始计数
# 列表类型 names_list = ['张三', '李四', '王五'] # 索引取值 first_student = names_list[0] print(first_student) # 输出结果:张三 second_student = names_list[1] print(second_student) # 输出结果:李四
(2)列表嵌套及嵌套取值
-
列表可以嵌套在其他列表中,形成二维或多维数组,通过嵌套的方式可以方便地处理复杂的数据结构。
# 列表嵌套 class1 = ['张三', '李四', '王五'] class2 = ['Tom', 'Jerry', 'Spike'] classes = [class1, class2] # 嵌套取值 student_1_class_1 = classes[0][0] print(student_1_class_1) # 输出结果:张三 student_2_class_2 = classes[1][1] print(student_2_class_2) # 输出结果:Jerry
【四】字典类型
-
如果我们需要用一个变量记录多个值,但多个值是不同属性的
-
比如人的姓名、年龄、身高,用列表可以存,但列表是用索引对应值的,而索引不能明确地表示值的含义
-
-
这就用到字典类型,字典类型是用key:value形式来存储数据
-
其中key可以对value有描述性的功能,能够明确的描述详细信息
-
person_info = {'name': 'Dream', 'age': 18, 'height': 185.3, 'hobby': ["动漫", "小说"]} print(person_info) # {'name': 'Dream', 'age': 18, 'height': 185.3, 'hobby': ['动漫', '小说']} print(type(person_info)) # <class 'dict'>
【1】字典取值(键取值)
-
字典不能通过索引取值
person_info = {'name': 'Dream', 'age': 18, 'height': 185.3, 'hobby': ["动漫", "小说"]} # 字典取值(键取值) name = person_info['name'] print(name) # 输出结果:Dream age = person_info['age'] print(age) # 输出结果:18
(2)字典嵌套及取值
# 字典嵌套及取值 student1 = {'name': 'Tom', 'age': 18} student2 = {'name': 'Jerry', 'age': 19} classroom = {'student1': student1, 'student2': student2} # 取值 student1_name = classroom['student1']['name'] print(student1_name) # 输出结果:Tom student2_age = classroom['student2']['age'] print(student2_age) # 输出结果:19
#练习 info={ 'name':'Dream', 'addr':{ '国家':'中国', 'info':[666,999,{'编号':466722,'hobby':['read','study','music']}] } } #print('my name is {} 我的国家{} 我的编号{} 我的爱好{} 我的幸运数字{}') print(f''' my name is {info['name']} my contry is {info['addr']['国家']} 我的编号{info['addr']['info'][2]['编号']} 我的爱好{info['addr']['info'][2]['hobby'][2]} 我的幸运数字{info['addr']['info'][0]} ''')
【五】布尔类型
-
布尔类型用于表示逻辑值,只有两个取值:True (真的)和 False(假的)。
-
在编程中,布尔类型经常用于控制程序的流程,例如条件判断、循环等。
-
定义
-
布尔类型只有两个取值:True 和 False。在 Python 中,首字母必须大写
-
布尔值的命名规范:结果可能是布尔值的情况,我们都采用 is 开头 命名
-
【1】条件判断(判断对错)
-
布尔类型常常用于条件判断
name = "" name = [] name = {} print(bool(name)) # False name = 1 print(bool(name)) # True
【2】在python中典型的真或假的情况
-
什么时候为真
-
数字1为真
-
什么时候为假
-
不存在的情况:空值为假,空的字符串、空的列表、空的字典、空的元组、数字 0
-
非空列表、非空字典、非空集合等: 如果容器类型中包含元素,被视为真。
-
非空字符串: 非空字符串被视为真。
-
非零数字: 除了零之外的任何整数或浮点数都被视为真。
-
布尔值为 True:
True
本身表示真。 -
布尔值为 False: 显而易见,
False
本身就表示假。 -
数字零: 数字类型中,整数或浮点数中的零被视为假。
-
空字符串: 空字符串
''
被视为假。 -
空列表、空字典、空集合等: 对于容器类型,如果它们为空,被视为假。
[六]元组类型
-
元组(tuple)是一种不可变的序列类型,类似于列表,用于存储多个有序元素。
-
元组与列表的主要区别在于元组的元素不能被修改、删除或添加,是不可变的数据类型。
-
元组通常用于存储相关联的数据,保持数据的完整性。
[1]定义
-
元组通过小括号
()
定义,其中的元素可以是不同的数据类型,用逗号,
分隔。 -
可以使用索引访问元素
# 定义元组 my_tuple = (1, 'hello', 3.14, True) # 访问元组元素 first_element = my_tuple[0] second_element = my_tuple[1] print(first_element) # 1 print(second_element) # 'hello'
[2]元组的不可变性
-
由于元组是不可变的,不能对元素进行修改、删除或添加
my_tuple = (1, 'hello', 3.14, True) # 尝试修改元组的元素(会报错) my_tuple[0] = 42 # TypeError: 'tuple' object does not support item assignment # 尝试删除元组的元素(会报错) del my_tuple[1] # TypeError: 'tuple' object doesn't support item deletion # 尝试添加元素到元组(会报错) my_tuple.append('new_element') # AttributeError: 'tuple' object has no attribute 'append'
[3]元组的基本操作
-
元组支持基本的操作,如切片、拼接等。
my_tuple = (1, 'hello', 3.14, True) # 切片操作 sliced_tuple = my_tuple[1:3] print(sliced_tuple) # ('hello', 3.14) # 拼接操作 new_tuple = my_tuple + ('world', False) print(new_tuple) # (1, 'hello', 3.14, True, 'world', False)
[4]元组解包
-
元组解包是一种将元组中的元素分配给多个变量的方法。(解压赋值)
my_tuple = (1, 'hello', 3.14, True) # 元组解包 a, b, c, d = my_tuple print(a) # 1 print(b) # 'hello' print(c) # 3.14 print(d) # True
-
元组是一个灵活且强大的数据类型,适用于许多场景,特别是需要不可变性的情况
[七]集合类型(set)
-
集合(set)是一种无序、不重复的数据类型,用于存储多个独立的元素。
-
集合通常用于去除重复元素,执行集合运算(如并集、交集、差集等),以及检查成员资格
【1】定义
-
集合通过大括号
{}
定义,其中的元素是不可重复的,可以包含不同的数据类型。
# 集合类型中不能存放的元素类型是 字典和列表 : 因字典和列表是可变数据类型不能被 hash num = {1, 2, 3, 'name', 'dream', 4, 1.11, 5, 5, 5, 5, 5, 5} print(num) # {1, 2, 3, 4, 1.11, 5, 'dream', 'name'}
-
集合的不可重复性
-
集合中的元素是不可重复的,即相同的元素不会重复存储。
unique_set = {1, 2, 3, 1, 2, 4, 5} print(unique_set) # {1, 2, 3, 4, 5}
-