1、基本数据类型
在我们的之前篇day02-变量中,我们介绍了变量及变量的赋值,我们都知道变量是存储在内存中的值,其实在内存中是会根据变量的数据类型,来分配指定的内存空间,那这变量的数据类型有哪些呢?
Python的基本数据类型一般分为6种:
- Numbers(数值)
- String(字符串)
- List(列表)
- Tuple(元组)
- Dictionary(字典)
- Set(集合)
例如,一个人的信息,就可以用上述数据类型来存储
代码语言:javascript复制name = "Ali" # 字符串类型,存储姓名
age = 25 # 整数类型,存储年龄
height = 1.65 # 浮点数类型,存储身高
is_student = True # 布尔类型,存储是否是学生
hobbies = ['reading', 'painting', ] # 列表类型,存储爱好
address = {'street': '123 Main St', 'city': 'China',} # 字典类型,存储地址信息
2、Numbers数字
数字支持四种数字类型:
- int(整型)
- float(浮点型)
- bool(布尔型)
- complex(复数)
数字类型赋值很简单,而且不能改变,所以数字类型是不可改变的数据类型,而使用type()函数可以查看变量的数据类型
代码语言:javascript复制age = 25 # 年龄
temperature = 37.5 # 温度
is_student = True # 是否是学生
z1 = 2 3j # 复数1,实部为2,虚部为3
print(type(age))
print(type(temperature))
print(type(is_student))
print(type(z1))
# 输出结果
<class 'int'>
<class 'float'>
<class 'bool'>
<class 'complex'>
在一些混合计算中,Python会把int类型转换为float类型,而在上篇的运算符中,/运算符
结果总会返回浮点数,而//运算符
会返回整数
那为什么说数字类型是不可变数据类型呢?
代码语言:javascript复制x = 5
print(x, id(x)) # 输出: 5 140709922068256
x = 10 # 修改了x的值
print(x, id(x)) # 输出: 10 140709922068416
上述x=5,我们知道是x的这个变量指向了整数5的内存地址,然后我们修改了x的值为10,其实会新创建一个整数10,然后x指向整数10的变量,但是整数5的对象还在,只是不在指向,从id值中也可看出整数是不可变的数据类型
3、String字符串
字符串(String)是由数字、字母、下划线组成的一串字符。
一般可以记:
a = "数字字母下划线之类的"
它可以表示文本的数据类型
字符串下标
我们定义变量为字符串后,可以对字符串进行取值,那就需要用到下标。可以使用
tips:获取的新字符串可以拿到头下标的值,而拿不到尾下标的值
字符串可以使用
拼接,可以使用*
重复操作
下边简单练习让你更深一步理解字符串下标
代码语言:javascript复制s = 'Hello Python!'
print(s) # 输出完整字符串
print(s[0]) # 输出字符串中的第一个字符
print(s[2:5]) # 输出字符串中第三个至第六个之间的字符串
print(s[2:]) # 输出从第三个字符开始的字符串
print(s[:-1]) # 输出字符串中最后一个字符串之前的所有字符串(不包括最后一个字符串))
print(s[-3:-1]) # 输出从倒数第三个开始至倒数第二个元素
print(s * 2) # 输出字符串两次
print(s " 我要学会你 ") # 输出连接的字符串
# 输出结果
Hello Python!
H
llo
llo Python!
Hello Python
on
Hello Python!Hello Python!
Hello Python! 我要学会你
4、List列表
List(列表) 是 Python 中使用最频繁的数据类型。
列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。
列表用 []
标识,是 python 最通用的复合数据类型。
一般可以记:
a = "字符,数字,字符串甚至可以包含列表"
列表下标
列表下标与字符串下标同样用到变量 头下标:尾下标 ,就可以截取相应的列表
从左到右索引默认 0 开始,从右到左索引默认 -1 开始。如下图:
同样,列表也可以使用
拼接,可以使用*
重复操作
下边简单练习让你更深一步理解列表下标
代码语言:javascript复制li = ['1', 2, 3.14, '哈哈', 5555]
li_2 = [1, 2, 3]
print(li) # 输出完整列表
print(li[0]) # 输出列表的第一个元素
print(li[1:3]) # 输出第二个至第三个元素
print(li[2:]) # 输出从第三个开始至列表末尾的所有元素
print(li[:3]) # 输出从第一个开始至第三个元素
print(li[-3:-1]) # 输出从倒数第三个开始至倒数第二个元素
print(li * 2) # 输出列表两次
print(li li_2) # 打印组合的列表
# 输出结果
['1', 2, 3.14, '哈哈', 5555]
1
[2, 3.14]
[3.14, '哈哈', 5555]
['1', 2, 3.14]
[3.14, '哈哈']
['1', 2, 3.14, '哈哈', 5555, '1', 2, 3.14, '哈哈', 5555]
['1', 2, 3.14, '哈哈', 5555, 1, 2, 3]
5、Tuple元祖
元组是另一个数据类型,类似于 List(列表)
元组用 ()
标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。
同样的,元祖也是使用的下标,
拼接,可以使用*
重复操作
下边简单练习让你更深一步理解元祖下标
代码语言:javascript复制tup = ('111d', 222, 333, '4444d', 5555)
tup_2 = (123, 'show')
print(tup) # 输出完整元组
print(tup[0]) # 输出元组的第一个元素
print(tup[1:3]) # 输出第二个至第四个(不包含)的元素
print(tup[2:]) # 输出从第三个开始至列表末尾的所有元素
print(tup * 2) # 输出元组两次
print(tup tup_2) # 打印组合的元组
# 输出结果
('111d', 222, 333, '4444d', 5555)
111d
(222, 333)
(333, '4444d', 5555)
('111d', 222, 333, '4444d', 5555, '111d', 222, 333, '4444d', 5555)
('111d', 222, 333, '4444d', 5555, 123, 'show')
代码语言:javascript复制列表和元祖的不同 列表(list)是可变的数据类型,而元组(tuple)是不可变的数据类型。意思是列表可以添加元素、修改元素和删除元素。而元祖不可添加元素、修改元素和删除元素。
my_list = [1, 2, 3]
my_tuple = (1, 2, 3)
# 修改值
my_list[1] = 5
my_tuple[1] = 5
# 添加值
my_list.append(4)
my_tuple.append(4)
# 删除值
del my_list[0]
del my_tuple[0]
运行下看下结果吧
6、Dict字典
字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。
列表是有序的对象集合,字典是无序的对象集合。
两者之间的区别在于:列表可以通过下标索引来存取,而字典通过key索引来存取
字典用{}
标识。字典是一个个键值对key-value组成
下边简单练习让你更深一步理解元祖key-value
代码语言:javascript复制my_dict = {'Name': 'hua', 'Age': 7, 'sex': '男'}
# 打印字典
print(my_dict)
print(my_dict['Name']) # 输出键为'Name'的值
print(my_dict['Age']) # 输出键为'Age'的值
# 查看字典的数量
print(len(my_dict))
# 查看类型
print(type(my_dict))
# 修改字典中的值
my_dict['Age'] = 8
print(my_dict['Age'])
# 删除字典中的键
del my_dict['Age']
print(my_dict)
# 输出所有键
print(my_dict.keys())
# 输出所有值
print(my_dict.values())
7、集合Set
集合(set)是一个无序的不重复元素序列。
集合中的元素不会重复,并且可以进行交集、并集、差集等常见的集合操作。
可以使用大括号 {}
创建集合,元素之间用逗号 , 分隔, 或者也可以使用 set() 函数创建集合。
{}
符号让你想到了什么?字典对不对,但是字典是一个个键值对,而集合是单独元素,并且没有顺序
那我们用{}
创建的是字典呢,还是集合呢?
我们来看下
代码语言:javascript复制my_now = {}
print(my_now, type(my_now))
# 输出结果
{} <class 'dict'>
用**{}
**符号创建的是字典,而不是集合,所以创建集合我们必须使用set()函数来创建
my_now = set()
print(my_now, type(my_now))
# 输出结果
set() <class 'set'>
集合中的元素不会重复,所以我们可以集合去重
还可以进行交集、并集、差集等常见的集合操作,我们可以用来找出两个集合中的交集、并集、差集
代码语言:javascript复制my_list = ['a', 'b', 'c', 'd', 'e', 'a', 'b', 'c', 'f']
my_set2 = {'a', 'b', 'c', 'd', 'e'}
# 1. 去重
my_set1 = set(my_list)
print(my_set1)
# 2. 交集
print(my_set1 & my_set2)
# 3. 并集
print(my_set1 | my_set2)
# 4. 差集
print(my_set1 - my_set2)
# 输出结果
{'a', 'e', 'd', 'f', 'c', 'b'}
{'a', 'c', 'e', 'd', 'b'}
{'a', 'e', 'd', 'f', 'c', 'b'}
{'f'}
8、数据类型转换
函数 | 描述 |
---|---|
int(x ,base) | 将x转换为一个整数 |
long(x ,base ) | 将x转换为一个长整数 |
float(x) | 将x转换到一个浮点数 |
complex(real ,imag) | 创建一个复数 |
str(x) | 将对象 x 转换为字符串 |
repr(x) | 将对象 x 转换为表达式字符串 |
eval(str) | 用来计算在字符串中的有效Python表达式,并返回一个对象 |
tuple(s) | 将序列 s 转换为一个元组 |
list(s) | 将序列 s 转换为一个列表 |
set(s) | 转换为可变集合 |
dict(d) | 创建一个字典。d 必须是一个序列 (key,value)元组。 |
frozenset(s) | 转换为不可变集合 |
chr(x) | 将一个整数转换为一个字符 |
unichr(x) | 将一个整数转换为Unicode字符 |
ord(x) | 将一个字符转换为它的整数值 |
hex(x) | 将一个整数转换为一个十六进制字符串 |
oct(x) | 将一个整数转换为一个八进制字符串 |
加粗的属于我们常用的,转换后会返回一个对象,我们代码来看下这些常用函数
代码语言:javascript复制整数与字符串、浮点数转换
num = 10
# 查看数据类型
print(type(num))
# 整数转换字符串
print(str(num),type(str(num)))
# 整数转换浮点数
print(float(num),type(float(num)))
代码语言:javascript复制字符串转换整数、浮点数
my_str = '123'
# 字符串转换整数
print(int(my_str), type(int(my_str)))
# 字符串转换浮点数
print(float(my_str), type(float(my_str)))
代码语言:javascript复制列表与元祖的转换
# 列表转换为元组
my_list = [1, 2, 3]
my_tuple = tuple(my_list)
print(my_tuple) # 输出: (1, 2, 3)
# 元组转换为列表
my_tuple = (4, 5, 6)
my_list = list(my_tuple)
print(my_list) # 输出: [4, 5, 6]
代码语言:javascript复制字符串与列表的转换
# 字符串转换为列表
my_string = "Hello"
my_list = list(my_string)
print(my_list) # 输出: ['H', 'e', 'l', 'l', 'o']
# 列表转换为字符串
my_list = ['W', 'o', 'r', 'l', 'd']
my_string = ''.join(my_list)
print(my_string) # 输出: "World"
代码语言:javascript复制字典和列表的转换
# 字典转换为列表
my_dict = {'a': 1, 'b': 2, 'c': 3}
my_list = list(my_dict.items())
print(my_list) # 输出: [('a', 1), ('b', 2), ('c', 3)]
# 提取出字典中的键
keys_list = list(my_dict.keys())
print(keys_list) # 输出: ['a', 'b', 'c']
# 提取出字典中的值
values_list = list(my_dict.values())
print(values_list) # 输出: [1, 2, 3]
# 列表转换为字典
my_list = [('a', 1), ('b', 2), ('c', 3)]
my_dict = dict(my_list)
print(my_dict) # 输出: {'a': 1, 'b': 2, 'c': 3}
day04练习
初级
1.编写一个程序,创建一个空数字,空字符串,空列表,空元祖,空字典,空集合
2.编写一个程序,可以输入一个数,打印输入数据类型
- 把输入的数字转换为整数
- 把整数再转换为浮点数
中级
1.编写一个程序,将一个字符串反转。string = "Hello, World!"
,然后打印出新字符串
2.编写一个程序,将一个元组中的元素连接成一个字符串。my_tuple = ('Hello', 'World', '!')
然后打印新字符串
3.编写一个程序,合并两个集合,并去除重复的元素。打印出新集合
set1 = {1, 2, 3}
set2 = {3, 4, 5}
4.编写一个程序,将该列表的重复元素去除然后组成一个新列表
my_list = [1, 2, 3, 4, 5, 4, 3, 6, 8, 1, 4]