一文彻底讲清Python 的内置数据类型,从数字、字符串到字典

360影视 2025-01-22 04:58 3

摘要:Python 是一种动态类型语言,这意味着变量的类型是根据它所保存的值自动确定的。要编写高效且无错误的代码,了解 Python 提供的各种内置数据类型至关重要。这些数据类型构成了 Python 编程的基础,并且几乎用于每个 Python 应用程序。

Python 是一种动态类型语言,这意味着变量的类型是根据它所保存的值自动确定的。要编写高效且无错误的代码,了解 Python 提供的各种内置数据类型至关重要。这些数据类型构成了 Python 编程的基础,并且几乎用于每个 Python 应用程序。

Python 的内置数据类型可以大致分为几组:

int类型用于表示整数,包括正数、负数以及零。 Python的int类型是无界的,这意味着只要有足够的内存,它就可以表示任意大的数字。

x = 42 # Positive integery = -15 # Negative integerz = 0 # Zeroprint(type(x)) # Output:

在此示例中, x 、 y和z均为整数。 Python 可以毫不费力地处理非常大的整数:

large_number = 10**100 # A very large integerprint(large_number)

float类型表示带小数点的实数。这些数字也可以用科学计数法来表示。 Python 使用双精度(64 位)来存储浮点数。

a = 3.14 # Floating-point numberb = -0.001 # Negative floatc = 1.5e3 # Scientific notation for 1500.0print(type(a)) # Output:

在此示例中, a 、 b和c是浮点数。 float类型对于表示需要精度的值非常有用,例如测量或财务计算。

Python 还支持复数,即a + bj形式的数字,其中a是实部, b是虚部。复数在科学和工程计算中特别有用。

c1 = 2 + 3j # Complex number with real part 2 and imaginary part 3c2 = -1j # Complex number with only an imaginary partprint(c1.real) # Output: 2.0 (real part of c1)print(c1.imag) # Output: 3.0 (imaginary part of c1)print(type(c1)) # Output:

在此示例中, c1和c2是复数。您可以使用.real和.imag属性访问实部和虚部。

list数据类型是可变序列,这意味着您可以在创建列表后更改、添加或删除元素。列表用途广泛,可以容纳不同类型的项目,包括其他列表。

fruits = ["apple", "banana", "cherry"]numbers = [1, 2, 3, 4, 5]mixed = [1, "apple", 3.14, True]print(fruits[0]) # Output: applefruits[1] = "orange" # Modifying the listprint(fruits) # Output: ['apple', 'orange', 'cherry']

在此示例中,列表fruits包含字符串元素,但列表也可以包含数字、布尔值,甚至是混合类型,如mixed中所示。修改列表的能力使它们成为动态更改集合的绝佳工具。

列表的常见操作:

添加项目: list.append(item)或list.insert(index, item)删除项目: list.remove(item)或list.pop(index)切片:使用list[start:end]提取子集fruits.append("grape")print(fruits) # Output: ['apple', 'orange', 'cherry', 'grape']

tuple是不可变的序列,这意味着一旦创建,其元素就无法修改。当您想要对在整个程序中不应更改的项目进行分组时,元组非常有用。

coordinates = (10, 20)person = ("John", 25, "Engineer")print(coordinates[0]) # Output: 10

在此示例中, coordinates组包含两个元素。元组通常用于存储相关但不可更改的数据,例如坐标或记录。

为什么使用元组?

不变性:由于元组是不可变的,因此它们具有更高的内存效率,并且可以用作字典中的键(与列表不同)。打包和拆包:元组允许轻松分配和交换变量。x, y = coordinates # Unpacking the tupleprint(x, y) # Output: 10 20

range类型表示数字序列,通常用于循环特定次数。 range对象具有内存效率高,因为它不会将数字存储在内存中,而是动态生成它们。

r = range(5) # Creates a range from 0 to 4 (5 is excluded)print(list(r)) # Output: [0, 1, 2, 3, 4]

还可以指定开始、停止和步骤以进行更多控制:

r = range(1, 10, 2) # Creates a range from 1 to 9, stepping by 2print(list(r)) # Output: [1, 3, 5, 7, 9]

范围经常用在for循环中:

for i in range(3): print(i) # Output: 0 1 2列表 (list) :可变的、有序的项目集合。可以添加、删除或更改元素。元组 (tuple) :不可变的、有序的项目集合。非常适合不应更改的数据。范围(range :高效表示数字序列,常用于循环中。

这些序列类型中的每一种都提供独特的优势,具体取决于您是否需要可变性或效率。列表非常适合动态数据,而元组更适合不会更改的固定数据。

文本数据类型

在Python中,用于表示文本的主要数据类型是str (字符串)类型。字符串是 Unicode 字符序列,因此可用于存储和操作文本数据,包括单词、句子,甚至大量文本。

Python 中的字符串是用单引号 ( ' ) 或双引号 ( " ) 括起来的字符序列。字符串是不可变的,这意味 着一旦创建,就无法修改。如果需要更改字符串,则必须创建新字符串一。

greeting = "Hello, World!"name = 'John Doe'print(type(greeting)) # Output:

还可以对多行字符串使用三引号( '''或""" ):

message = """This is a multi-line string.You can write across multiple lines."""print(message)

尽管字符串是不可变的,但 Python 提供了多种操作字符串和生成新字符串的方法。

连接:您可以使用+运算符组合字符串。first_name = "John"last_name = "Doe"full_name = first_name + " " + last_nameprint(full_name) # Output: John Doe重复:使用*运算符多次重复字符串。repeat = "Hello! " * 3print(repeat) # Output: Hello! Hello! Hello!切片:您可以使用切片提取字符串的一部分。text = "Python Programming"print(text[0:6]) # Output: Pythonprint(text[-11:]) # Output: Programming长度: len函数返回字符串中的字符数。

Python 提供了多种内置的字符串方法来操作和处理字符串。以下是一些常用的字符串方法:

upper :将字符串转换为大写。text = "hello"print(text.upper) # Output: HELLOlower :将字符串转换为小写。text = "HELLO"print(text.lower) # Output: hellostrip :删除任何前导和尾随空格。text = " hello "print(text.strip) # Output: helloreplace :用另一个子字符串替换出现的子字符串。text = "Python is fun"print(text.replace("fun", "awesome")) # Output: Python is awesomesplit :根据分隔符将字符串拆分为列表。text = "apple, banana, cherry"fruits = text.split(", ")print(fruits) # Output: ['apple', 'banana', 'cherry']join :使用指定的分隔符将列表的元素连接成字符串。fruits = ['apple', 'banana', 'cherry']result = ", ".join(fruits)print(result) # Output: apple, banana, cherry

Python 提供了强大的字符串格式化方法,例如 f 字符串,它允许您将表达式嵌入到字符串文本中。 F 字符串从 Python 3.6 开始可用。

使用 f 字符串的示例:

name = "Alice"age = 30intro = f"My name is {name} and I am {age} years old."print(intro) # Output: My name is Alice and I am 30 years old.

此方法提供了一种更具可读性和更有效的方式来在字符串中嵌入变量和表达式。

字符串 (str) :用于存储和操作文本数据的不可变字符序列。常见操作:字符串连接、切片、重复、求长度。字符串方法:包括upper 、 replace和split等操作来转换或处理字符串。字符串格式化:使用 f-string 轻松将变量和表达式嵌入到字符串中。

str类型是 Python 中处理文本的基础。了解如何有效地操作和格式化字符串对于在程序中处理基于文本的数据至关重要。

映射数据类型

在Python中,主要的内置映射数据类型是dict (字典)。字典是键值对的无序集合,其中每个键必须是唯一且不可变的,而值可以是任何类型。字典对于基于唯一键存储和检索数据非常有效。

字典是使用大括号{}和一系列键值对创建的,其中每个键与其值之间用冒号:分隔。您还可以使用dict构造函数创建字典。

person = { "name": "Alice", "age": 30, "job": "Engineer"}print(person["name"]) # Output: Aliceprint(person.get("age")) # Output: 30

在此示例中,字典person使用键"name" 、 "age"和"job"存储有关个人的信息。可以通过引用该键来访问与每个键关联的值。

字典是可变的,这意味着您可以在创建字典后添加、更改或删除键值对。

添加新的键值对:person["city"] = "New York"print(person) # Output: {'name': 'Alice', 'age': 30, 'job': 'Engineer', 'city': 'New York'}修改现有值:person["age"] = 31print(person["age"]) # Output: 31删除键值对:person.pop("job")print(person) # Output: {'name': 'Alice', 'age': 31, 'city': 'New York'}

还可以使用del关键字来删除键值对:

del person["city"]print(person) # Output: {'name': 'Alice', 'age': 31}

字典提供了许多管理键值对的有用方法。一些最常见的方法包括:

keys :返回字典中所有键的类似列表的对象。print(person.keys) # Output: dict_keys(['name', 'age'])values :返回所有值的类似列表的对象。print(person.values) # Output: dict_values(['Alice', 31])items :以元组形式返回所有键值对的类似列表的对象。print(person.items) # Output: dict_items([('name', 'Alice'), ('age', 31)])update :使用另一个字典或迭代器中的键值对更新字典。new_data = {"job": "Designer", "city": "San Francisco"}person.update(new_data)print(person) # Output: {'name': 'Alice', 'age': 31, 'job': 'Designer', 'city': 'San Francisco'}

字典通常用作查找表,因为它们允许您快速查找与特定键关联的值。当您需要有效地存储和检索数据时,这特别有用。

prices = { "apple": 0.99, "banana": 0.50, "cherry": 2.50}print(prices["apple"]) # Output: 0.99

在这里,字典prices充当查找表,可以根据商品名称快速查找商品的价格。

与列表推导式类似,您可以使用字典推导式以简洁且可读的方式创建字典。

squares = {x: x**2 for x in range(5)}print(squares) # Output: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

此示例生成一个字典,其中键是从0到4的数字,值是它们的平方。

字典 (dict) :键值对的无序集合。键必须是唯一且不可变的,而值可以是任何类型。Mutable :创建字典后可以添加、修改和删除元素。高效查找:字典非常适合需要基于唯一键进行快速查找的情况。字典方法:有用的方法包括keys 、 values 、 items和update 。

字典是 Python 中最强大、最灵活的数据类型之一,这使得它们对于高效的数据组织和检索至关重要。

集合数据类型

在 Python 中,集合是无序、唯一元素的集合。 Python 提供两种类型的集合: set和frozenset 。当您需要存储不重复的项目或执行数学集合运算(例如并集、交集和差集)时,集特别有用。

set是不可变对象的无序集合。但是,集合本身是可变的,这意味着您可以在创建集合后添加或删除元素。由于集合是无序的,因此它们不支持像列表或元组那样的索引或切片。

fruits = {"apple", "banana", "cherry"}print(fruits) # Output: {'apple', 'banana', 'cherry'}# Adding an elementfruits.add("orange")print(fruits) # Output: {'apple', 'banana', 'cherry', 'orange'}# Removing an elementfruits.remove("banana")print(fruits) # Output: {'apple', 'cherry', 'orange'}

在此示例中,集合fruits包含三个独特的元素。 .add方法允许我们添加新元素, .remove方法允许我们删除元素。

集合的性质:

唯一元素:设置自动丢弃重复值。无序:集合中的元素没有定义的顺序,并且每次打印或访问集合时顺序都可能更改。可变:您可以添加或删除元素。

重要的设置操作:

集合支持许多数学集合运算,例如并、交、差和对称差。

Union :组合两个集合中的所有唯一元素。set1 = {1, 2, 3}set2 = {3, 4, 5}union_set = set1.union(set2)print(union_set) # Output: {1, 2, 3, 4, 5}交集:仅返回两个集合共有的元素。intersection_set = set1.intersection(set2)print(intersection_set) # Output: {3}差异:返回一个集合中但不在另一个集合中的元素。difference_set = set1.difference(set2)print(difference_set) # Output: {1, 2}对称差异:返回任一集合中的元素,但不返回两个集合中的元素。symmetric_difference_set = set1.symmetric_difference(set2)print(symmetric_difference_set) # Output: {1, 2, 4, 5}

frozenset是集合的不可变版本。一旦创建,就无法修改其元素(即无法添加或删除元素)。但是,与集合一样, frozenset支持所有标准集合运算,例如并集、交集和差集。

例子:

frozen_fruits = frozenset(["apple", "banana", "cherry"])print(frozen_fruits) # Output: frozenset({'apple', 'banana', 'cherry'})# You cannot modify a frozenset, but you can perform set operationsset_a = frozenset([1, 2, 3])set_b = frozenset([3, 4, 5])print(set_a.intersection(set_b)) # Output: frozenset({3})

何时使用frozenset :

不可变需求:当您需要一个在创建后无法更改的集合时(例如,用作字典键或确保该集合在整个程序中保持不变)。性能:由于不变性, frozenset比常规集合具有轻微的性能优势,特别是在频繁访问集合的情况下。

set和frozenset都支持多种内置方法来执行操作和查询数据。

add (仅限集合):向集合添加一个元素。my_set = {1, 2, 3}my_set.add(4)print(my_set) # Output: {1, 2, 3, 4}remove (仅限集合):从集合中删除一个元素。my_set.remove(2)print(my_set) # Output: {1, 3, 4}union :组合两个集合中的所有唯一元素。set1 = {1, 2, 3}set2 = {3, 4, 5}print(set1.union(set2)) # Output: {1, 2, 3, 4, 5}intersection :仅返回两个集合共有的元素。print(set1.intersection(set2)) # Output: {3}difference :返回一组中的元素,但不返回另一组中的元素。print(set1.difference(set2)) # Output: {1, 2}symmetric_difference :返回任一集合中但不在两个集合中的元素。print(set1.symmetric_difference(set2)) # Output: {1, 2, 4, 5}集合 (set) :唯一的、可变元素的无序集合。非常适合存储不允许重复且需要集合操作的集合。冻结集(frozenset :不可变集,支持集合操作,但创建后无法修改。集合运算:并、交、差和对称差是处理集合的强大工具。

集合对于管理唯一项的集合和执行基于集合的操作非常有效,而frozenset在需要时提供不变性。

布尔数据类型

在 Python 中,布尔数据类型 ( bool ) 表示两个可能值之一: True或False 。这些值通常用在条件和控制流中来管理程序逻辑。布尔值是比较运算、决策和循环结构的重要组成部分。

bool数据类型只有两个可能的值:

TrueFalse

Python 将True和False视为整数的特殊情况,其中True相当于1 , False相当于0 。然而,布尔值最常用于逻辑运算,而不是算术运算。

is_active = Trueis_valid = Falseprint(is_active) # Output: Trueprint(is_valid) # Output: False

布尔值通常是比较或逻辑表达式的结果。返回布尔值的一些常见运算符是:

比较运算符: == 、 != 、 、 =逻辑运算符: and 、 or 、 not

比较运算符示例:

a = 10b = 20print(a == b) # Output: False (10 is not equal to 20)print(a

在此示例中,比较运算符用于评估a和b之间的关系,返回布尔值( True或False )。

逻辑运算符示例:

x = Truey = Falseprint(x and y) # Output: False (both must be True for 'and' to return True)print(x or y) # Output: True (only one needs to be True for 'or' to return True)print(not x) # Output: False (not inverts the boolean value)and :如果两个操作数均为True则返回True ;否则,它返回False 。or :如果至少一个操作数为True则返回True ;否则,它返回False 。not :反转布尔值,将True变为False ,反之亦然。

在 Python 中,许多数据类型都有隐式布尔值。这在if和while等条件语句中特别有用。以下值在 Python 中被视为False :

None0 (整数或浮点数)'' (空字符串) (空列表){} (空字典)set (空集)False

其他一切都被认为是True 。

print(bool(0)) # Output: False (zero is treated as False)print(bool("")) # Output: False (empty string is False)print(bool([1, 2])) # Output: True (non-empty list is True)print(bool(None)) # Output: False

这种行为在编写条件逻辑时非常有用,因为 Python 会自动将表达式转换为其布尔等价物。

布尔值是 Python 中控制流的基础。它们帮助确定if 、 else 、 elif 、 while和for语句中代码块的执行。

if语句示例:

age = 18if age >= 18: print("You are an adult.") # This block executes because the condition is Trueelse: print("You are a minor.")

在此示例中, if语句评估age >= 18是否为True 。如果是,则运行第一个代码块;否则,运行else块。

count = 0while count

在此while循环中,在每次迭代之前都会评估条件count

布尔值是编程逻辑的基础,允许您根据条件做出决策并控制代码的行为。

来源:自由坦荡的湖泊AI

相关推荐