领先的免费Web技术教程,涵盖HTML到ASP.NET

网站首页 > 知识剖析 正文

新手学Python避坑,学习效率狂飙! 三、Python 数据类型

nixiaole 2025-04-30 18:46:58 知识剖析 7 ℃

Python 是一种动态类型语言,在使用变量时不需要显式声明数据类型,变量的数据类型会在赋值时根据赋值的值自动确定。以下是 Python 中主要的数据类型及相关避坑分享:

一、数字类型

1、整数(int):用于表示整数,例如1、-5、0等。在 Python 3 中,整数的长度没有限制,可以表示任意大小的整数。

2、浮点数(float):用于表示带有小数部分的数字,例如3.14、-0.5等。由于计算机存储浮点数的方式是基于二进制的,所以有些十进制小数在转换为二进制时可能会出现精度问题。

3、复数(complex):由实数部分和虚数部分组成,例如3 + 4j,其中j是虚数单位。

避坑分享

注意浮点数的精度问题。例如,0.1 + 0.2并不等于0.3,而是0.30000000000000004。这是因为浮点数在计算机中是以二进制形式存储的,无法精确表示某些十进制小数。在进行浮点数比较时,应该使用math.isclose()函数,而不是直接使用==。

二、字符串类型(str)

字符串是由字符组成的序列,用单引号、双引号或三引号括起来。例如,'hello'、"world"、'''This is a multi - line string.'''。

避坑分享

字符串是不可变的,这意味着一旦创建了一个字符串,就不能直接修改它的某个字符。例如,s = 'hello',s[0] = 'H'会报错。如果需要修改字符串,应该创建一个新的字符串。

在使用字符串格式化时,要注意占位符的类型和数量与实际传入的值要匹配。例如,print("{} {}".format(1, 2, 3))会报错,因为占位符的数量少于传入的值。

三、列表类型(list)

列表是一种有序可变序列,可以包含任意类型的元素,用方括号括起来,元素之间用逗号分隔。例如,[1, 'apple', 3.14]。

避坑分享

注意列表的浅拷贝问题。当使用list1 = list2这样的方式赋值时,实际上是将list1和list2指向了同一个列表对象。如果对list1进行修改,list2也会相应地改变。如果想要创建一个独立的副本,应该使用切片list1 = list2[:]或list1 = list(list2)。

在遍历列表时,如果同时对列表进行删除操作,可能会导致意外的结果。例如:

python

lst = [1, 2, 3, 4, 5]
for num in lst:
    if num % 2 == 0:
        lst.remove(num)  
print(lst)  

上述代码不会正确删除所有偶数,因为在删除元素后,列表的索引会发生变化。正确的做法是使用列表推导式或者倒序遍历列表来进行删除操作。

四、元组类型(tuple)

元组是一种有序不可变序列,用圆括号括起来,元素之间用逗号分隔。例如,(1, 'apple', 3.14)。

避坑分享

元组一旦创建,就不能修改其元素。所以不要尝试对元组进行赋值操作,否则会报错。

五、集合类型(set)

集合是一个无序的、不包含重复元素的数据类型,用花括号括起来,元素之间用逗号分隔。例如,{1, 2, 3, 3}会自动去重为{1, 2, 3}。

避坑分享

集合中的元素必须是可哈希的,这意味着列表、字典等可变类型不能作为集合的元素。例如,set([1, [2, 3]])会报错,因为列表是不可哈希的。

六、字典类型(dict)

字典是一种无序键值对集合,用花括号括起来,每个键值对之间用逗号分隔,键和值之间用冒号分隔。例如,{'name': 'John', 'age': 30}。

避坑分享

字典的键必须是唯一的不可变的,所以列表不能作为字典的键,但元组可以。如果使用了重复的键,后面的键值对会覆盖前面的。

在访问字典中不存在的键时,会引发KeyError错误。可以使用get()方法来避免这种情况,例如d.get('key', default_value),如果键不存在,会返回默认值default_value。

以上是 Python 中主要的数据类型及一些常见的避坑点,希望对新手学习 Python 有所帮助。在实际学习和编程过程中,还需要通过不断的实践和总结来加深对这些数据类型的理解和掌握。

重点:多动脑,多动手,多验证!

最近发表
标签列表