Python基础教程:str、list

1. str基础

1.1 字符串定义与基本操作

字符串是 Python 中的一种数据类型,用单引号或者双引号表示,例如:

"Hello, World!"

字符串是一种不可变的序列,也就是说,不可修改其中的某一个字符,但是可以通过切片等操作获取其中的子串。

字符串有很多内置的方法,可以进行拼接、替换、分割、查找等操作,例如:

"Hello" + "World" # 字符串拼接

"Hello".replace("H", "W") # 替换字符串中的某个字符

"apple,banana,pear".split(",") # 字符串分割

"Hello".find("e") # 查找字符串中某个子串的位置

1.2 格式化字符串

在字符串中,可以使用占位符来表示一个变量,例如:

"Hello, %s" % "World" # 使用占位符 %s 表示字符串类型变量

这种方法能够完成简单的字符串格式化,但是难以处理复杂的格式化需求。为了解决这个问题,Python 3.6 引入了 f-string,例如:

name = "Alice"

age = 18

f"My name is {name}, and I am {age} years old."

f-string 使用大括号 {} 来表示变量,可以方便地引用变量的属性或者进行简单的表达式计算。

2. list基础

2.1 列表定义与基本操作

列表是 Python 中的一种数据类型,用方括号 [] 表示,可以存储任意类型的数据,例如:

[1, 2, 3] # 表示包含三个整型元素的列表

["apple", "banana", "pear"] # 表示包含三个字符串元素的列表

[1, "apple", True] # 表示包含三个不同类型的元素的列表

列表也是一种可变的序列,可以通过索引、切片等操作修改其中的元素。

列表有很多内置的方法,可以进行添加、删除、排序等操作,例如:

[1, 2, 3].append(4) # 向列表末尾添加一个元素

["apple", "banana", "pear"].remove("banana") # 从列表中删除某一个元素

[3, 1, 2].sort() # 对列表进行排序

2.2 列表生成式

列表生成式是一种非常方便的生成列表的方法,可以使用简单的表达式进行列表元素的计算,例如:

[x for x in range(10)] # 生成包含 0 到 9 的整数的列表

[x ** 2 for x in range(10)] # 生成包含 0 到 9 的整数的平方的列表

[x + y for x in [1,2,3] for y in [3,4,5]] # 生成两个列表元素之和的列表

3. 综合应用:文本生成

3.1 文本生成简介

使用 Python 可以很方便地进行文本生成,例如自动摘要、机器翻译、聊天机器人等应用。

3.2 文本生成方法

文本生成的方法有很多种,常见的有统计方法、神经网络方法等。

其中,统计方法是指利用出现频率和相邻关系等信息,生成新的文本。例如,对于一个文本,可以统计每个单词出现的次数和相邻的单词的出现情况,从而生成新的文本。

而神经网络方法则是指训练一个深度学习模型,学习文本中的结构和规律,从而生成新的文本。

3.3 文本生成实践

下面,我们使用统计方法来实现一个简单的文本生成器。

首先,我们需要准备一个语料库,即一个文本文件。这里,我们选择使用《红楼梦》作为语料库。

接着,我们需要对语料库进行预处理,将文本分割成单词列表,去除标点符号和停用词等无关信息,统计每个单词出现的次数和相邻单词的出现情况,例如:

import jieba

import re

# 读取文本文件,去除标点符号和停用词,分割成单词列表

def read_file(filename):

with open(filename, "r", encoding="utf-8") as f:

text = f.read()

text = re.sub("[^\u4e00-\u9fa5a-zA-Z0-9]", " ", text)

words = jieba.cut(text)

stopwords = set()

with open("stopwords.txt", "r", encoding="utf-8") as f:

for line in f:

stopwords.add(line.strip())

words = [word for word in words if word not in stopwords]

return words

# 统计单词出现的次数和相邻单词的出现情况

def count_words(words):

word_count = {}

for i in range(1, len(words)):

prev_word = words[i-1]

curr_word = words[i]

if prev_word not in word_count:

word_count[prev_word] = {}

if curr_word not in word_count[prev_word]:

word_count[prev_word][curr_word] = 0

word_count[prev_word][curr_word] += 1

return word_count

# 生成新的文本

def generate_text(word_count, length=100):

text = []

curr_word = "底下"

for i in range(length):

if curr_word in word_count:

next_word = max(word_count[curr_word], key=word_count[curr_word].get)

else:

next_word = "说道"

text.append(next_word)

curr_word = next_word

return "".join(text)

最后,我们可以调用上述函数来生成新的文本:

words = read_file("hongloumeng.txt")

word_count = count_words(words)

text = generate_text(word_count)

print(text)

使用上述方法生成的新文本可能不太准确,但是可以作为一种简单的文本生成方法,并且能够增加程序的趣味性。

4. 总结

本文介绍了 Python 中的字符串和列表两种基本数据类型,以及文本生成的方法和实践。

字符串可以用于存储和操作文本信息,可以使用格式化字符串等方法方便地进行文本处理。

列表可以用于存储和操作一组数据,可以使用列表生成式等方法方便地生成和处理列表。

文本生成可以使用统计方法或者神经网络方法,实现自动摘要、机器翻译、聊天机器人等应用。

后端开发标签