python - 函数返回相同的列表两次
问题描述
新考试后更新 我在下面创建了一个函数,它接收一个字符串列表,其中的字符串是句子,每个句子都有不同数量的单词。然后我尝试使用 item.split() 将这些字符串分解成单独的单词,创建一个包含单词而不是句子的新列表。然后我尝试打印新列表的长度。
我传入了一个名为的列表,该列表split_list
在此函数之外定义,是一个字符串列表(句子列表)。
以下是我split_list
基于 .txt 文件创建的方法,该文件本身就是一个原始形式的长字符串。
file = open("classic_cars.txt", "r")
split_list = []
for line in file:
new_list = line.split(".")
ultra_list = line.split("?")
split_list.extend(new_list)
split_list.extend(ultra_list)
#print(split_list)
问题:我对我的文本文件进行了手动字数统计,它显示为有 957 个字。但是,当我打印返回/新生成列表的长度时,它显示为 1917。当我将 new_list 打印到控制台时,它会打印两次。为什么这样做?
def create_list_with_words(list):
new_list = []
for item in list:
words = item.split()
for word in words:
new_list.append(word)
print(new_list)
print(len(new_list))
create_list_of_words(split_list)
解决方案
您得到的重复项是因为您试图用两个不同的字符将同一行拆分两次。
例如,考虑以下行:
我正在尝试学习python。我真的吗?这是我要测试的句子。
如果我们将此行传递给您的 for 循环,它将按如下方式拆分此行:
首先在 . (点)
new_list = ['I am trying to learn python', ' Am I really? This is the sentence I will test', '']
第二次上?(问号)
ultra_list = ['I am trying to learn python. Am I really', ' This is the sentence I will test.']
您将这两个列表扩展split_list
为如下:
split_list.extend(new_list)
split_list.extend(ultra_list)
所以决赛split_list
将是:
split_list = ['I am trying to learn python', ' Am I really? This is the sentence I will test', '', 'I am trying to learn python. Am I really', ' This is the sentence I will test.']
您要传递给您的函数的此列表create_list_with_words
贯穿 的每个元素split_list
并在空间上拆分每个元素。所以算错了。
以下是更正后的代码:
def create_list_with_words(list):
new_list = []
for item in list:
words = item.split()
for word in words:
new_list.append(word)
print(new_list)
print(len(new_list))
file = open("classic_cars.txt", "r")
split_list = []
for line in file:
line = line.replace("?", '')
new_list = line.split(".")
split_list.extend(new_list)
create_list_with_words(split_list)
根据您的需要,您可能需要对此代码进行更多调整。
注意:您的函数名称create_list_with_words
只是作为create_list_of_words
. 我在发布时假设它是错字。
推荐阅读
- php - 我在 laravel 资源控制中更新功能有问题
- r - 需要帮助在 R 中重塑数据集
- django - 使用 Django ORM 检查成员资格的最快方法
- android - Recyclerview Grid 布局项目剪切问题
- ios - 升级到 FirebaseCrashlytics 和“没有这样的模块 FirebaseCrashlytics”
- javascript - 有什么方法可以在 async.eachSeries 中运行 async await 吗?
- javascript - vee-validate 不存在这样的验证器“必需”。用正则表达式
- javascript - 用于动态表的jspdf自动表
- javascript - 顶部方法的最小堆栈解决方案错误?
- architecture - 分布式系统是否与水平扩展相同?