Python基础数据类型全面详解

文章目录

  • 如何判断一个变量是什么类型?
    • 1. 使用type()方法,返回变量的数据类型
    • 2. isinstance(变量名称,数据类型),返回True或False
  • 1. 整型(int)
    • 1.1 整型的定义
    • 1.2 不同进制的表示
    • 1.3 整型的基本运算
  • 2. 浮点型(float)
  • 3. 布尔型(bool)
    • 3.1 布尔型定义
    • 3.2 布尔型运算
    • 3.3 其他类型转换成bool类型
    • 3.4 比较运算产生布尔值
  • 4. 字符串类型(str)
    • 4.1 字符串创建
    • 4.2 字符串操作
      • 4.2.1 字符串的拼接
      • 4.2.2 字符串的切片
      • 4.2.3 字符串的常用方法
      • 4.2.4 字符串格式化
  • 5. 列表(list)
    • 5.1 列表的创建
    • 5.2 列表操作
    • 5.3 列表方法
  • 6. 字典(dict)
    • 6.1 字典常用方法
    • 6.2 字典推导式
  • 7. 元组(tuple)
    • 7.1 元组常用方法
    • 7.2 元组与列表的转换
  • 8. 集合(set)
    • 8.1 集合常用方法
    • 8.2 集合推导式
    • 8.3 集合的去重
  • 9. 数据类型总结
  • 10.Python提供了内置函数用于数据类型之间的转换

Python作为一门易学易用的编程语言,其丰富的数据类型为开发者提供了强大的工具。本文将详细介绍Python中8种核心数据类型,帮助初学者和有一定经验的开发者更好地理解和使用它们。

如何判断一个变量是什么类型?

1. 使用type()方法,返回变量的数据类型

示例:

n1 = 100
n2 = "200"
print(type(n1))
print(type(n2))

输出:
在这里插入图片描述

2. isinstance(变量名称,数据类型),返回True或False

示例:

n1 = 100
n2 = "200"
print(isinstance(n1, int))
print(isinstance(n1, str))
print(isinstance(n2, int))
print(isinstance(n2, str))

输出:
在这里插入图片描述

1. 整型(int)

整型是Python中最基本的数值类型,用于表示整数。

1.1 整型的定义

示例:

# 整型示例
age = 25
count = -10
big_number = 1000000

1.2 不同进制的表示

0b:表示二进制
0o:表示八进制
0x:表示十六进制

示例:

# 不同进制的表示
binary = 0b1010    # 二进制,等于10
octal = 0o12       # 八进制,等于10
hexadecimal = 0xA  # 十六进制,等于10

1.3 整型的基本运算

除了常见的 加 + 、 减 - 、 乘 * 、 除 /
还有以下:
整除: //
取模:%
幂运算:**

示例:

# 基本运算
a = 10
b = 3
print(a + b)  # 加法:13
print(a - b)  # 减法:7
print(a * b)  # 乘法:30
print(a / b)  # 除法:3.333...
print(a // b) # 整除:3
print(a % b)  # 取模:1
print(a ** b) # 幂运算:1000

2. 浮点型(float)

浮点型用于表示带有小数点的数值。

# 浮点型示例
pi = 3.14159
temperature = -5.7
scientific = 2.5e-3  # 科学计数法:0.0025

# 浮点数运算
x = 10.5
y = 3.2
print(x + y)  # 13.7
print(x - y)  # 7.3
print(x * y)  # 33.6
print(x / y)  # 3.28125

# 注意浮点数精度问题
result = 0.1 + 0.2
print(result)  # 0.30000000000000004
print(result == 0.3)  # False - 这能更直观地展示精度问题

# 使用round()函数控制精度
rounded = round(result, 2)
print(rounded)  # 0.3

3. 布尔型(bool)

布尔类型只有两个值:TrueFalse,用于逻辑判断。

3.1 布尔型定义

示例:

# 布尔类型示例
is_sunny = True
is_raining = False

3.2 布尔型运算

示例:

# 布尔运算
print(True and False)  # False
print(True or False)   # True
print(not True)        # False

3.3 其他类型转换成bool类型

示例:

# 其他类型转换为布尔类型
print(bool(0))      # False
print(bool(1))      # True
print(bool(""))     # False
print(bool("Hello"))# True
print(bool([]))     # False
print(bool([1, 2])) # True

3.4 比较运算产生布尔值

示例:

# 比较运算产生布尔值
a = 10
b = 20
print(a == b)  # False
print(a != b)  # True
print(a < b)   # True
print(a >= b)  # False

4. 字符串类型(str)

字符串用于表示文本数据,是不可变序列。

4.1 字符串创建

用英文的双引号" "或者单引号’ ’ 包裹,创建单行字符串。
也可以用英文三引号包裹,创建多行字符串。

示例:

# 字符串创建
name = "Alice"
greeting = 'Hello, World!'
multiline = """这是一个
多行字符串"""

4.2 字符串操作

4.2.1 字符串的拼接

使用“ + ”直接拼接两个字符串

# 字符串操作
s1 = "Hello"
s2 = "World"
print(s1 + " " + s2)  # 拼接:Hello World
print(s1 * 3)         # 重复:HelloHelloHello
print(len(s1))        # 长度:5

4.2.2 字符串的切片

** 序列名称[开始位置下标:结束位置下标:步⻓(步阶)] **
numstr = ‘0123456789’
numstr[0:3:1] # 012 => range⽅法⾮常类似,步⻓:每次前进1步
numstr[0:3:2] # 02 => 每次前进2步
步⻓可以为负数,正数代表从左向右截取,负数代表从右向左截取

# 字符串索引和切片
numstr = '0123456789'

# 1、从2到5开始切⽚,步⻓为1
print(numstr[2:5:1]) #234
print(numstr[2:5]) # 234

# 2、只有结尾的字符串切⽚:代表从索引为0开始,截取到索引为5的位置(不包含索引为5的数据)
print(numstr[:5]) # 01234 

# 3、只有开头的字符串切⽚:代表从起始位置开始,已知截取到字符串的结尾
print(numstr[1:]) # 123456789

# 4、获取或拷⻉整个字符串
print(numstr[:]) # 0123456789

# 5、调整步阶:类似求偶数
print(numstr[::2]) # 02468

# 6、把步阶设置为负整数:类似字符串翻转
print(numstr[::-1]) # 9876543210

# 7、起始位置与结束位置都是负数
print(numstr[-4:-1]) # 678

# 8、结束字符为负数,如截取012345678
print(numstr[:-1]) # 012345678

4.2.3 字符串的常用方法

  1. strip():去除两端空格。
  2. lower():转为小写。
  3. upper():转化大写。
  4. replace(“old”,“new”):替换。
  5. split():分割,并返回列表,可以用下标调用。

示例:

# 常用字符串方法
sentence = "  Hello, Python!  "
print(sentence.strip())        # Hello, Python!
print(sentence.lower())        #  hello, python! 
print(sentence.upper())        #  HELLO, PYTHON! 
print(sentence.replace("Python", "World"))  #  Hello, World!  
print(sentence.split(","))     # ['  Hello', ' Python!  ']

4.2.4 字符串格式化

  1. f 形式(Python3),推荐使用。
  2. format方法(Python3)。
  3. 百分号(Python2和Python3)。

示例:

# 字符串格式化
name = "Bob"
age = 25
# f-string (Python 3.6+)
print(f"{name} is {age} years old")
# format方法
print("{} is {} years old".format(name, age))
# %格式化
print("%s is %d years old" % (name, age))

5. 列表(list)

列表是有序、可变的容器,可以存储不同类型的元素。标识符:[ ]

5.1 列表的创建

# 列表创建
numbers = [1, 2, 3, 4, 5]
mixed = [1, "hello", 3.14, True]
empty_list = []
nested_list = [[1, 2], [3, 4]]

5.2 列表操作


# 列表操作
fruits = ["apple", "banana", "cherry"]
print(len(fruits))        # 长度:3
print("apple" in fruits)  # 成员检查:True

# 列表索引和切片
print(fruits[0])     # apple
print(fruits[-1])    # cherry
print(fruits[1:3])   # ['banana', 'cherry']

# 修改列表
fruits[1] = "blueberry"  # 修改元素
fruits.append("orange")  # 添加元素
fruits.insert(1, "grape")# 插入元素
fruits.remove("apple")   # 删除元素
popped = fruits.pop()    # 弹出最后一个元素

5.3 列表方法

# 列表方法
numbers = [3, 1, 4, 1, 5, 9, 2]
numbers.sort()           # 排序
numbers.reverse()        # 反转
print(numbers.count(1))  # 计数:2
print(numbers.index(4))  # 索引:2

# 列表推导式
# 生成一个包含0-9的平方数的列表
squares = [x**2 for x in range(10)]
# 等价于
# squares = []
# for x in range(10):
#     squares.append(x**2)

# 生成一个包含0-9中偶数的平方数的列表
even_squares = [x**2 for x in range(10) if x % 2 == 0]

6. 字典(dict)

字典是无序的键值对集合,键必须是不可变类型。标识符:{ }

6.1 字典常用方法

# 字典创建
person = {"name": "Alice", "age": 30, "city": "New York"}
empty_dict = {}
dict_from_list = dict([("name", "Bob"), ("age", 25)])

# 访问字典元素
print(person["name"])        # Alice
print(person.get("age"))     # 30
print(person.get("country", "USA"))  # 如果键不存在,返回默认值:USA

# 修改字典
person["age"] = 31           # 修改值
person["country"] = "USA"    # 添加新键值对
person.update({"city": "Boston", "job": "Engineer"})  # 批量更新

# 删除元素
del person["city"]           # 删除键值对
age = person.pop("age")      # 弹出指定键的值

# 字典方法
print(person.keys())         # 所有键
print(person.values())       # 所有值
print(person.items())        # 所有键值对

# 遍历字典
for key, value in person.items():
    print(f"{key}: {value}")

6.2 字典推导式

# 字典推导式
squares = {x: x**2 for x in range(5)}
# 等价于
# squares = {}
# for x in range(5):
#     squares[x] = x**2

7. 元组(tuple)

元组是有序、不可变的容器,通常用于存储相关数据的集合。标识符:( )

7.1 元组常用方法

# 元组创建
coordinates = (10, 20)
rgb = (255, 128, 0)
single_element = (5,)  # 注意逗号,否则不是元组
mixed_tuple = (1, "hello", 3.14)

# 元组操作
print(coordinates[0])        # 10
print(coordinates[1])        # 20
print(len(coordinates))      # 长度:2

# 元组是不可变的
# coordinates[0] = 15  # 这会报错

# 元组解包
x, y = coordinates
print(x, y)  # 10 20

# 元组方法
numbers = (1, 2, 3, 2, 4, 2)
print(numbers.count(2))  # 3
print(numbers.index(3))  # 2

7.2 元组与列表的转换

# 元组与列表的转换
my_list = [1, 2, 3]
my_tuple = tuple(my_list)
new_list = list(my_tuple)

8. 集合(set)

集合是无序、不重复元素的容器,支持数学集合运算。标识符:{ }

8.1 集合常用方法

# 集合创建
fruits = {"apple", "banana", "cherry"}
numbers = set([1, 2, 3, 4, 5])
empty_set = set()  # 注意:{}创建的是空字典

# 集合操作
fruits.add("orange")        # 添加元素
fruits.remove("banana")     # 移除元素,如果不存在会报错
fruits.discard("grape")     # 移除元素,如果不存在不会报错

# 集合运算
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}

print(set1 | set2)  # 并集:{1, 2, 3, 4, 5, 6, 7, 8}
print(set1 & set2)  # 交集:{4, 5}
print(set1 - set2)  # 差集:{1, 2, 3}
print(set1 ^ set2)  # 对称差集:{1, 2, 3, 6, 7, 8}

# 集合方法
print(len(set1))            # 长度
print(3 in set1)            # 成员检查

8.2 集合推导式

# 集合推导式
# 创建一个集合,包含0-9中偶数的平方数
even_squares = {x**2 for x in range(10) if x % 2 == 0}
# 等价于
# even_squares = set()
# for x in range(10):
#     if x % 2 == 0:  # 只处理偶数
#         even_squares.add(x**2)

8.3 集合的去重

# 去重功能
numbers = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
unique_numbers = set(numbers)
print(unique_numbers)  # {1, 2, 3, 4}

9. 数据类型总结

数据类型可变性有序性示例
整型(int)不可变10,0,-5
浮点型(float)不可变3.14,-2.5,0.0
布尔型(bool)不可变True,False
字符串(str)不可变“hello”,‘world’
列表(list)可变[1,2,3],[‘a’,‘b’]
字典(dict)可变无(3.7+有序){‘key’:‘value’}
元组(tuple)不可变(1,2),(‘a’,‘b’)
集合(set)可变{1,2,3},{‘a’,‘b’}

10.Python提供了内置函数用于数据类型之间的转换

# 类型转换示例
str_num = "123"
int_num = int(str_num)      # 字符串转整型
float_num = float(str_num)  # 字符串转浮点型

num = 456
str_from_num = str(num)     # 数字转字符串

my_list = [1, 2, 3]
my_tuple = tuple(my_list)   # 列表转元组
my_set = set(my_list)       # 列表转集合

# 布尔转换
print(bool(0))      # False
print(bool(1))      # True
print(bool(""))     # False
print(bool("Hi"))   # True
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值