Python 的基本数据类型可分为以下几类:
Python 提供了内置函数用于数据类型转换,常见转换方式如下:
函数 | 功能说明 | 示例 |
---|---|---|
int(x) |
将 x 转换为整数(忽略小数部分) |
int(3.8) → 3 ;int("100") → 100 |
float(x) |
将 x 转换为浮点数 |
float(5) → 5.0 ;float("3.14") → 3.14 |
str(x) |
将 x 转换为字符串 |
str(123) → "123" ;str([1,2]) → "[1, 2]" |
list(x) |
将可迭代对象 x 转换为列表 |
list("abc") → ['a','b','c'] ;list((1,2)) → [1,2] |
tuple(x) |
将可迭代对象 x 转换为元组 |
tuple([1,2]) → (1,2) ;tuple("hi") → ('h','i') |
dict(x) |
将键值对序列 x 转换为字典 |
dict([(1,'a'), (2,'b')]) → {1: 'a', 2: 'b'} |
set(x) |
将可迭代对象 x 转换为集合(去重) |
set([1,1,2]) → {1,2} |
bool(x) |
将 x 转换为布尔值(空/0 为 False ) |
bool(0) → False ;bool("a") → True |
Python 数字类型包括整数(int
)、浮点数(float
)、复数(complex
)和布尔值(bool
,特殊的整数)。
# 整数(无大小限制)
a = 100
b = -20
c = 0b1010 # 二进制(10)
d = 0o12 # 八进制(10)
e = 0x0a # 十六进制(10)
# 浮点数(带小数点)
f = 3.14
g = -0.001
h = 1.2e3 # 科学计数法(1200.0)
# 复数(实部+虚部j)
i = 3 + 4j
j = 5j # 纯虚数
# 布尔值(True=1,False=0)
k = True
l = False
数字是不可变类型,直接通过变量名访问值:
print(a) # 100
print(f) # 3.14
+
、-
、*
、/
(除法,返回浮点数)、//
(整除)、%
(取余)、**
(幂运算)print(5 / 2) # 2.5
print(5 // 2) # 2
print(5 % 2) # 1
print(2 **3) # 8
abs(x)
:返回绝对值round(x, n)
:四舍五入,n
为小数位数max(x1, x2, ...)
/min(x1, x2, ...)
:返回最大值/最小值pow(x, y)
:返回 x** y
print(abs(-3)) # 3
print(round(3.1415, 2)) # 3.14
print(max(1, 5, 3)) # 5
字符串是字符的有序序列,用单引号('
)、双引号("
)或三引号('''
/"""
,支持多行)包裹。
s1 = 'hello'
s2 = "world"
s3 = '''多行
字符串'''
s4 = "I'm a student" # 双引号内可包含单引号
s5 = 'He said "Hi"' # 单引号内可包含双引号
[index]
访问单个字符(索引从 0 开始,负数表示从末尾计数)[start:end:step]
访问子串(左闭右开,step
为步长)s = "python"
print(s[0]) # 'p'(第一个字符)
print(s[-1]) # 'n'(最后一个字符)
print(s[1:4]) # 'yth'(索引1到3的字符)
print(s[::2]) # 'pto'(每隔一个字符取一次)
拼接:+
运算符或 *
重复
print("hello" + " " + "world") # "hello world"
print("a" * 3) # "aaa"
成员判断:in
/ not in
print("ll" in "hello") # True
常用内置方法:
s.lower()
/ s.upper()
:转换为小写/大写s.strip()
:去除首尾空白字符s.split(sep)
:按 sep
分割为列表s.join(iter)
:用 s
拼接可迭代对象s.replace(old, new)
:替换子串s = " Hello World "
print(s.strip()) # "Hello World"
print(s.lower()) # " hello world "
print("abc".join(["1", "2"])) # "1abc2"
print(s.replace("World", "Python")) # " Hello Python "
内置函数:
len(s)
:返回字符串长度str.format()
:格式化字符串(或用 f-字符串更简洁)print(len("hello")) # 5
print(f"Name: {name}, Age: {age}") # f-字符串格式化
列表是有序、可变的元素集合,元素可以是不同类型,用 []
定义。
l1 = [1, 2, 3]
l2 = ["a", 1, True] # 元素类型可混合
l3 = [] # 空列表
l4 = list(range(5)) # 从可迭代对象创建:[0,1,2,3,4]
l = [10, 20, 30, 40]
print(l[1]) # 20
print(l[-2:]) # [30, 40]
l[0] = 100 # 修改元素:[100, 20, 30, 40]
添加元素:
l.append(x)
:在末尾添加 x
l.insert(i, x)
:在索引 i
处插入 x
l.extend(iter)
:合并另一个可迭代对象l = [1, 2]
l.append(3) # [1, 2, 3]
l.insert(0, 0) # [0, 1, 2, 3]
l.extend([4,5]) # [0, 1, 2, 3, 4, 5]
删除元素:
l.pop(i)
:删除索引 i
处的元素并返回(默认最后一个)l.remove(x)
:删除第一个值为 x
的元素del l[i]
:删除索引 i
处的元素l = [1, 2, 3]
l.pop() # 返回3,列表变为[1,2]
l.remove(1) # 列表变为[2]
其他常用方法:
l.sort()
:排序(原地修改)l.reverse()
:反转(原地修改)l.count(x)
:统计 x
出现的次数l = [3, 1, 2]
l.sort() # [1, 2, 3]
l.reverse() # [3, 2, 1]
print(l.count(2)) # 1
内置函数:
len(l)
:长度;max(l)
/min(l)
:最大/最小值sum(l)
:求和(元素为数字)print(len([1,2,3])) # 3
print(sum([1,2,3])) # 6
元组是有序、不可变的元素集合,用 ()
定义(元素不可修改,适合存储固定数据)。
t1 = (1, 2, 3)
t2 = ("a", 1) # 混合类型
t3 = () # 空元组
t4 = (5,) # 单元素元组(必须加逗号)
t5 = tuple([1,2]) # 从列表创建:(1,2)
t = (10, 20, 30)
print(t[1]) # 20
print(t[:2]) # (10, 20)
# t[0] = 100 # 错误:元组不可修改
不可变性:元组一旦创建,元素不能增删改,但可包含可变对象(如列表)
t = (1, [2, 3])
t[1].append(4) # 允许修改元组中的列表元素:(1, [2, 3, 4])
常用方法:
t.count(x)
:统计 x
出现次数t.index(x)
:返回 x
第一次出现的索引t = (1, 2, 2, 3)
print(t.count(2)) # 2
print(t.index(2)) # 1
内置函数:与列表相同(len
、max
、min
、sum
等)
字典是无序(Python 3.7+ 为有序)的键值对集合,用 {key: value}
定义,键唯一且不可变(如字符串、数字、元组)。
d1 = {"name": "Alice", "age": 20}
d2 = {1: "one", (2,3): "two-three"} # 键为数字、元组
d3 = {} # 空字典
d4 = dict(name="Bob", age=18) # 用 dict() 函数创建
d5 = dict([("a", 1), ("b", 2)]) # 从键值对列表创建
d[key]
或 d.get(key, default)
(不存在时返回 default
)d.keys()
、d.values()
、d.items()
d = {"name": "Alice", "age": 20}
print(d["name"]) # "Alice"
print(d.get("gender", "unknown")) # "unknown"(键不存在)
print(d.keys()) # dict_keys(['name', 'age'])
print(d.items()) # dict_items([('name', 'Alice'), ('age', 20)])
添加/修改键值对:d[key] = value
(键存在则修改,不存在则添加)
d = {"name": "Alice"}
d["age"] = 20 # 添加:{"name": "Alice", "age": 20}
d["name"] = "Bob" # 修改:{"name": "Bob", "age": 20}
删除键值对:
d.pop(key)
:删除键 key
并返回对应值del d[key]
:删除键 key
d = {"a": 1, "b": 2}
d.pop("a") # 返回1,字典变为{"b": 2}
del d["b"] # 字典变为{}
其他常用方法:
d.clear()
:清空字典d.copy()
:复制字典(浅拷贝)d = {"a": 1}
d2 = d.copy() # d2 = {"a": 1}
d.clear() # d 变为 {}
内置函数:len(d)
返回键值对数量
print(len({"a":1, "b":2})) # 2
集合是无序、不重复的元素集合,用 {}
或 set()
定义(空集合必须用 set()
)。
s1 = {1, 2, 3}
s2 = {1, 2, 2, 3} # 自动去重:{1, 2, 3}
s3 = set() # 空集合
s4 = set([1, 2, 3]) # 从列表创建:{1, 2, 3}
s5 = set("abc") # 从字符串创建:{'a', 'b', 'c'}
in
判断元素是否存在,或迭代遍历s = {1, 2, 3}
print(2 in s) # True
for x in s:
print(x) # 输出1、2、3(顺序不确定)
添加/删除元素:
s.add(x)
:添加元素 x
(已存在则忽略)s.remove(x)
:删除元素 x
(不存在则报错)s.discard(x)
:删除元素 x
(不存在则忽略)s = {1, 2}
s.add(3) # {1, 2, 3}
s.remove(2) # {1, 3}
s.discard(4) # 无变化
集合运算:
&
或 s1.intersection(s2)
)|
或 s1.union(s2)
)-
或 s1.difference(s2)
)^
或 s1.symmetric_difference(s2)
):元素在其中一个集合但不在两个都有s1 = {1, 2, 3}
s2 = {3, 4, 5}
print(s1 & s2) # {3}(交集)
print(s1 | s2) # {1,2,3,4,5}(并集)
print(s1 - s2) # {1,2}(差集)
内置函数:len(s)
长度;max(s)
/min(s)
最大/最小值
print(len({1,2,3})) # 3