day04-数据类型

2023-10-17 10:02:35 浏览数 (1)

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')

列表和元祖的不同 列表(list)是可变的数据类型,而元组(tuple)是不可变的数据类型。意思是列表可以添加元素、修改元素和删除元素。而元祖不可添加元素、修改元素和删除元素。

代码语言:javascript复制
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()函数来创建

代码语言:javascript复制
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]

0 人点赞