Python 编程操作连载之字符串,列表,字典和集合处理

  • Post category:Python

Python 编程操作连载之字符串、列表、字典和集合处理

1. 字符串处理

1.1 字符串基础

在 Python 中,字符串是一种序列类型,由字符组成,可以使用单引号、双引号或三引号表示。例如:

s1 = 'hello'
s2 = "world"
s3 = """hello
world"""

其中,变量 s1s2 的值分别为 'hello''world',变量 s3 的值为 'hello\nworld'\n 表示换行符。

可以使用 + 运算符将两个字符串拼接成一个新的字符串。例如:

s4 = s1 + ' ' + s2
print(s4)  # Output: 'hello world'

可以使用 len 函数获取一个字符串的长度。例如:

print(len(s4))  # Output: 11

可以使用 [] 运算符获取一个字符串中的某个字符或一段字符。例如:

print(s4[0])     # Output: 'h'
print(s4[-1])    # Output: 'd'
print(s4[6:])    # Output: 'world'
print(s4[0:5])   # Output: 'hello'

其中,负数索引表示从后往前数的位置,例如 -1 表示最后一个位置。

可以使用 in 运算符判断一个字符串是否包含另一个字符串。例如:

print('he' in s1)     # Output: True
print('ld' in s2)     # Output: False

1.2 字符串方法

Python 中的字符串对象有很多有用的方法,可以方便地进行各种字符串操作。

  • split 方法可以将一个字符串按照指定的分隔符分割成多个子串。例如:

s = 'hello world'
words = s.split(' ')
print(words) # Output: ['hello', 'world']

  • join 方法可以将一个字符串列表或元组中的字符串连接成一个新的字符串,中间用指定的字符分隔。例如:

words = ['hello', 'world']
s = ' '.join(words)
print(s) # Output: 'hello world'

  • replace 方法可以将一个字符串中的指定子串替换成另一个字符串。例如:

s = 'hello world'
s = s.replace('world', 'python')
print(s) # Output: 'hello python'

  • strip 方法可以去掉一个字符串两端的空格或指定字符。例如:

s = ' hello\n '
s = s.strip()
print(s) # Output: 'hello'

2. 列表处理

2.1 列表基础

在 Python 中,列表是一种序列类型,由多个元素组成,元素可以是任意类型,不必是同一类型。可以使用方括号表示一个列表。例如:

lst1 = [1, 2, 3]
lst2 = ['hello', 123, 3.14]
lst3 = [] # 空列表

可以使用 + 运算符将两个列表连接成一个新的列表。例如:

lst4 = lst2 + lst1
print(lst4)  # Output: ['hello', 123, 3.14, 1, 2, 3]

可以使用 [] 运算符获取一个列表中的某个元素或一段元素。例如:

print(lst4[0])     # Output: 'hello'
print(lst4[-1])    # Output: 3
print(lst4[1:3])   # Output: [123, 3.14]

可以使用 len 函数获取一个列表的长度。例如:

print(len(lst4))  # Output: 6

可以使用 in 运算符判断一个元素是否在一个列表中。例如:

print(1 in lst1)     # Output: True
print('world' in lst2)     # Output: False

2.2 列表方法

Python 中的列表对象有很多有用的方法,可以方便地进行各种列表操作。

  • append 方法可以在一个列表的末尾添加一个新元素。例如:

lst = [1, 2, 3]
lst.append(4)
print(lst) # Output: [1, 2, 3, 4]

  • extend 方法可以将一个列表中的所有元素添加到另一个列表中。例如:

lst1 = [1, 2, 3]
lst2 = [4, 5, 6]
lst1.extend(lst2)
print(lst1) # Output: [1, 2, 3, 4, 5, 6]

  • insert 方法可以在一个列表的指定位置插入一个新元素。例如:

lst = [1, 2, 3]
lst.insert(1, 5)
print(lst) # Output: [1, 5, 2, 3]

  • remove 方法可以从一个列表中删除指定元素。例如:

lst = [1, 2, 3, 4]
lst.remove(2)
print(lst) # Output: [1, 3, 4]

3. 字典处理

3.1 字典基础

在 Python 中,字典是一种映射类型,由多个键值对组成,每个键值对由一个唯一的键和一个值组成。可以使用花括号表示一个字典。例如:

d1 = {'name': 'John', 'age': 18}
d2 = {} # 空字典

可以使用 [] 运算符获取一个字典中的某个键对应的值。例如:

print(d1['name'])     # Output: 'John'

可以使用 len 函数获取一个字典的长度(即键值对的个数)。例如:

print(len(d1))  # Output: 2

可以使用 in 运算符判断一个键是否在一个字典中。例如:

print('name' in d1)     # Output: True
print('gender' in d1)     # Output: False

3.2 字典方法

Python 中的字典对象有很多有用的方法,可以方便地进行各种字典操作。

  • keys 方法可以获取一个字典中所有键的列表。例如:

d = {'name': 'John', 'age': 18}
keys = d.keys()
print(keys) # Output: dict_keys(['name', 'age'])

  • values 方法可以获取一个字典中所有值的列表。例如:

d = {'name': 'John', 'age': 18}
values = d.values()
print(values) # Output: dict_values(['John', 18])

  • items 方法可以获取一个字典中所有键值对的列表,每个键值对是一个元组。例如:

d = {'name': 'John', 'age': 18}
items = d.items()
print(items) # Output: dict_items([('name', 'John'), ('age', 18)])

4. 集合处理

4.1 集合基础

在 Python 中,集合是一种无序且元素唯一的集合类型。可以使用花括号或 set 函数创建一个集合。例如:

s1 = {1, 2, 3}
s2 = set([2, 3, 4])

可以使用 len 函数获取一个集合的长度(即元素个数)。例如:

print(len(s1))  # Output: 3

可以使用 in 运算符判断一个元素是否在一个集合中。例如:

print(1 in s1)     # Output: True
print(4 in s1)     # Output: False

4.2 集合方法

Python 中的集合对象有很多有用的方法,可以方便地进行各种集合操作。

  • add 方法可以向一个集合中添加一个新元素。例如:

s = {1, 2, 3}
s.add(4)
print(s) # Output: {1, 2, 3, 4}

  • remove 方法可以从一个集合中删除一个元素。如果元素不存在,会抛出 KeyError 异常。例如:

s = {1, 2, 3}
s.remove(2)
print(s) # Output: {1, 3}

  • pop 方法可以从一个集合中随机删除一个元素,并返回该元素。如果集合为空,会抛出 KeyError 异常。例如:

s = {1, 2, 3}
x = s.pop()
print(x) # Output: 1
print(s) # Output: {2, 3}

通过本篇攻略的介绍,相信大家对 Python 对字符串、列表、字典和集合的操作有了更加深入的了解。下面我们通过两个简单的例子,进一步了解这些操作的应用。

例子1:字符串处理

假设我们要分析一段英文文本中每个单词出现的次数。我们可以先将文本分割成单词,再创建一个字典,用单词作为键,出现次数作为值,最后遍历文本中的单词,将其出现次数加一。

以下是代码示例:

text = "Python is a popular programming language that is desirable to learn for many reasons"
words = text.split(' ')  # 将文本按照空格分割成单词列表
freq = {}  # 创建一个空字典
for word in words:
    if word in freq:
        freq[word] += 1
    else:
        freq[word] = 1
print(freq)  # Output: {'Python': 1, 'is': 1, 'a': 1, 'popular': 1, 'programming': 1, 'language': 1, 'that': 1, 'desirable': 1, 'to': 1, 'learn': 1, 'for': 1, 'many': 1, 'reasons': 1}

在上面的代码中,split 方法将文本按照空格分割成单词列表,freq 字典用于存储每个单词出现的次数。遍历单词列表时,如果字典中已经有了当前单词作为键,就将该键对应的值加一;如果字典中没有当前单词作为键,就将该单词作为新键,值为 1。

例子2:列表与字典的组合

假设我们要统计一段文本中每个单词出现的行数和列数。我们可以使用一个列表存储每个单词在文本中出现的位置,每个位置是一个元组,包含该单词所在的行数和列数。我们可以先将文本按行分割成行列表,再遍历每一行,将每一行按照空格分割成单词列表,再遍历单词列表,将每个单词的位置加入到列表中。

以下是代码示例:

text = "Python is a popular programming language that is desirable to learn for many reasons\nIt is widely used in data science and machine learning"
lines = text.split('\n')  # 将文本按照换行符分割成行列表
pos = []  # 创建一个空列表用于存储位置
for i, line in enumerate(lines):
    words = line.split(' ')  # 将每一行按照空格分割成单词列表
    for j, word in enumerate(words):
        pos.append((i+1, j+1))   # 将单词的位置加入到列表中
freq = {}  # 创建一个空字典用于存储每个单词出现的行数和列数
for word, p in zip(words, pos):
    if word in freq:
        freq[word].append(p)
    else:
        freq[word] = [p]
print(freq)

在上面的代码中,split 方法将文本按照换行符分割成行列表,pos 列表用于存储单词在文本中出现的位置。遍历行列表时,对每一行按照空格分割成单词列表,再遍历单词列表时,将每个单词的位置 (i+1, j+1) 加入到列表中,其中 ij 分别表示该单词所在的行号和列号。

最后,遍历单词列表时,将每个单词的位置列表作为值,该单词作为键,添加到字典中。如果字典中已经有了当前单词作为键,就将该键对应的值(即位置列表)中添加新的位置;如果字典中没有当前单词作为键,就将该单词作为新键,值为位置列表。