全面了解python字符串和字典

  • Post category:Python

全面了解Python字符串和字典

本文将全面介绍Python中字符串和字典的概念、用法和注意事项。

字符串

概念

字符串是Python中常用的一种数据类型,表示由一系列字符组成的有序序列。Python中可以使用单引号、双引号或三引号来表示字符串。

用法

字符串基本操作

字符串的连接

利用”+”运算符,可以将两个字符串连接起来。

str1 = "Hello,"
str2 = "world!"
result = str1 + str2
print(result) # 输出:"Hello,world!"

字符串的复制

使用”*”运算符,可以将一个字符串复制多次。

str1 = "Hello"
result = str1 * 3
print(result) # 输出:"HelloHelloHello"

字符串的索引

字符串中的每一个字符都有一个编号,称为索引,从0开始。可以通过索引来访问字符串中的单个字符。

str1 = "Python"
print(str1[0]) # 输出:"P"
print(str1[3]) # 输出:"h"

字符串的切片

利用”:”运算符,可以从字符串中切出一部分。

str1 = "Python"
print(str1[2:5]) # 输出:"tho"

字符串的常用方法

字符串长度

利用len()函数,可以获取字符串的长度。

str1 = "Python"
print(len(str1)) # 输出:6

字符串的统计

利用count()方法,可以统计字符串中某个字符或字符串出现的次数。

str1 = "Python"
print(str1.count("o")) # 输出:1
print(str1.count("t")) # 输出:0

字符串的查找

利用find()方法,可以在字符串中查找某个字符或字符串,返回第一次出现的位置,如果找不到,返回-1。

str1 = "Python"
print(str1.find("o")) # 输出:4
print(str1.find("t")) # 输出:-1

字符串的替换

利用replace()方法,可以将字符串中的某个字符或字符串替换成另一个字符或字符串。

str1 = "Python"
result = str1.replace("o", "X")
print(result) # 输出:"PythXn"

字符串的分割

利用split()方法,可以将字符串按照某个字符或字符串进行分割,返回一个包含分割后子串的列表。

str1 = "red,green,blue"
result = str1.split(",")
print(result) # 输出:["red", "green", "blue"]

注意事项

字符串的不可变性

在Python中,字符串是不可变的,即不能修改字符串的某个字符。如果需要修改字符串,只能通过生成一个新的字符串来实现。

str1 = "Python"
# str1[0] = "J" # 该语句会抛出TypeError异常
str2 = "J" + str1[1:]
print(str2) # 输出:"Jython"

字符串的编码/解码

在Python 3中,字符串默认采用Unicode编码,可以通过encode方法将其编码为其他类型的字符集,也可以通过decode方法将其解码为Unicode编码。

str1 = "Hello,大家好"
result = str1.encode("gbk")
print(result) # 输出:b'Hello,\xb4\xf3\xc0\xe0\xba\xc3'
result2 = result.decode("gbk")
print(result2) # 输出:"Hello,大家好"

字典

概念

字典是Python中的另一种基本数据类型,是一种由键值对组成的无序集合,可以快速地通过键访问到对应的值。字典的键必须是不可变类型,如字符串、数字、元组等。

用法

字典的创建和访问

创建一个字典,可以使用花括号{}或者dict()函数。

# 通过花括号创建
dict1 = {"name": "Tom", "age": 18}
# 通过dict()函数创建
dict2 = dict(name="Jerry", age=20)

访问字典中的元素,可以使用键来索引,或使用get()方法。如果访问的键不存在,使用索引的方式会抛出KeyError异常,使用get()方式会返回None。

dict1 = {"name": "Tom", "age": 18}
print(dict1["name"]) # 输出:"Tom"
print(dict1.get("country")) # 输出:None

字典的更新、删除和遍历

更新字典中的元素,可以使用赋值语句或update()方法。

dict1 = {"name": "Tom", "age": 18}
dict1["age"] = 20
print(dict1) # 输出:{"name": "Tom", "age": 20}

dict2 = {"country": "USA"}
dict1.update(dict2)
print(dict1) # 输出:{"name": "Tom", "age": 20, "country": "USA"}

删除字典中的元素,可以使用del语句或pop()方法。

dict1 = {"name": "Tom", "age": 18}
del dict1["age"]
print(dict1) # 输出:{"name": "Tom"}

dict1 = {"name": "Tom", "age": 18}
dict1.pop("age")
print(dict1) # 输出:{"name": "Tom"}

遍历字典的键值对,可以使用items()方法或者直接遍历字典。

dict1 = {"name": "Tom", "age": 18}
for key, value in dict1.items():
    print(key, value)

注意事项

字典的无序性

字典是一种无序集合,键值对的顺序不是插入顺序,也不是按照键的大小或哈希值排序的。

dict1 = {"B": 2, "A": 1, "C": 3}
# 输出的顺序可能不是插入的顺序,也不是按照键的大小排序的
print(dict1) # 输出:{"B": 2, "A": 1, "C": 3}

字典的深浅拷贝

使用赋值语句创建字典的拷贝时,实际上拷贝的是引用而非副本。如果需要对字典进行深浅拷贝,可以使用copy()方法或者copy模块。

dict1 = {"name": "Tom", "age": 18}
dict2 = dict1
dict1["age"] = 20
print(dict2) # 输出:{"name": "Tom", "age": 20}

import copy
dict1 = {"name": "Tom", "age": 18}
dict2 = copy.deepcopy(dict1)
dict1["age"] = 20
print(dict2) # 输出:{"name": "Tom", "age": 18}