Python 是一种动态类型语言,这意味着变量的类型是根据它所保存的值自动确定的。要编写高效且无错误的代码,了解 Python 提供的各种内置数据类型至关重要。这些数据类型构成了 Python 编程的基础,并且几乎用于每个 Python 应用程序。
Python 的内置数据类型可以大致分为几组:
P ython 提供了三种不同的数值数据类型: int 、 float和complex 。这些类型用于表示数字并执行各种数学运算。
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属性访问实部和虚部。
Python 提供了几种内置的序列数据类型,允许您以有序的方式存储和管理项目集合。最常见的序列类型是list 、 tuple和range 。序列类型支持索引、切片和迭代等操作。
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中所示。修改列表的能力使它们成为动态更改集合的绝佳工具。
列表的常见操作:
tuple是不可变的序列,这意味着一旦创建,其元素就无法修改。当您想要对在整个程序中不应更改的项目进行分组时,元组非常有用。
coordinates = (10, 20)person = ("John", 25, "Engineer")print(coordinates[0])# Output: 10在此示例中, coordinates组包含两个元素。元组通常用于存储相关但不可更改的数据,例如坐标或记录。
为什么使用元组?
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这些序列类型中的每一种都提供独特的优势,具体取决于您是否需要可变性或效率。列表非常适合动态数据,而元组更适合不会更改的固定数据。
在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 提供了多种操作字符串和生成新字符串的方法。
Python 提供了多种内置的字符串方法来操作和处理字符串。以下是一些常用的字符串方法:
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类型是 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"存储有关个人的信息。可以通过引用该键来访问与每个键关联的值。
字典是可变的,这意味着您可以在创建字典后添加、更改或删除键值对。
还可以使用del关键字来删除键值对:
del person["city"]print(person)# Output: {'name': 'Alice', 'age': 31}字典提供了许多管理键值对的有用方法。一些最常见的方法包括:
字典通常用作查找表,因为它们允许您快速查找与特定键关联的值。当您需要有效地存储和检索数据时,这特别有用。
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的数字,值是它们的平方。
字典是 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()方法允许我们删除元素。
集合的性质:
重要的设置操作:
集合支持许多数学集合运算,例如并、交、差和对称差。
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 :
set和frozenset都支持多种内置方法来执行操作和查询数据。
集合对于管理唯一项的集合和执行基于集合的操作非常有效,而frozenset在需要时提供不变性。
在 Python 中,布尔数据类型 ( bool ) 表示两个可能值之一: True或False 。这些值通常用在条件和控制流中来管理程序逻辑。布尔值是比较运算、决策和循环结构的重要组成部分。
bool数据类型只有两个可能的值:
Python 将True和False视为整数的特殊情况,其中True相当于1 , False相当于0 。然而,布尔值最常用于逻辑运算,而不是算术运算。
is_active = Trueis_valid = Falseprint(is_active)# Output: Trueprint(is_valid) # Output: False布尔值通常是比较或逻辑表达式的结果。返回布尔值的一些常见运算符是:
比较运算符示例:
a = 10b = 20print(a == b)# Output: False (10 is not equal to 20)print(a < b) # Output: True (10 is less than 20)在此示例中,比较运算符用于评估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)在 Python 中,许多数据类型都有隐式布尔值。这在if和while等条件语句中特别有用。以下值在 Python 中被视为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块。
while循环示例:
count = 0while count < 5:print(count)count += 1在此while循环中,在每次迭代之前都会评估条件count < 5 。只要条件为True ,循环就会继续执行。
布尔值是编程逻辑的基础,允许您根据条件做出决策并控制代码的行为。