在python中的列表列表中使用已定义的函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在python中的列表列表中使用已定义的函数相关的知识,希望对你有一定的参考价值。

我有一个定义的功能:

def map(id,txt):
   mapop= []
   words = txt.split()
   for word in words:
     tmp= (word,id,1)
     mapop.append(tmp)
   return mapop 

我试图使用许多方法在我的列表列表中应用此函数,但它们都不起作用。

  1. 下面给出了AttributeError:'list'对象没有属性'split' list(map(len,filtered_wordList))
  2. 这给出了一个TypeError:map()缺少1个必需的位置参数:'txt' [map(item) for item in filtered_wordList]
  3. 这给出了一个TypeError:map()需要2个位置参数,但是给出了89个 mapped=[] for line in filtered_wordList: temp=map(*line) mapped.append(temp)

你能不能告诉我哪里出错了。

答案

如果你像这样使用你的功能图:

text = 'Stack Overflow is great'
map(2, text)

它输出:

[('Stack', 2, 1), ('Overflow', 2, 1), ('is', 2, 1), ('great', 2, 1)]

你的函数接受一个id变量和一个文本(应该是一个字符串)。它将文本分割为空格,如下所示:

['Stack', 'Overflow', 'is', 'great'] 

并循环遍历此列表中的每个单词,并添加一个元组,其中包含单词,您传递的ID和1到您的mapop列表,如下所示:

('Stack', 2, 1)

在它循环每个单词后,它返回mapop

另一答案

正如其他人所指出的那样,当前的问题是你在与自己争论:你对函数应该使用什么参数仍然不一致 - 输入文本是单个句子还是句子列表。我冒昧地改变了功能名称。这是我认为可以解决您的问题的建议用法。您可以将多个语句块减少到一行,但我希望当前版本对您来说更具可读性。

filtered_wordlist = [
    'Call me Ishmael',
    'The boy was odd',
    'They could only say it just "happened to happen" and was not very likely to happen again.'
]

def word_id(id,txt):
   mapop= []
   words = txt.split()
   for word in words:
     tmp= (word,id,1)
     mapop.append(tmp)
   return mapop 


lexicon = []
for id, sentence in enumerate(filtered_wordlist):
    lexicon.append(word_id(id, sentence))

print(lexicon)

输出(附加换行符以便于阅读):

[('Call', 0, 1), ('me', 0, 1), ('Ishmael', 0, 1),
 ('The', 1, 1), ('boy', 1, 1), ('was', 1, 1), ('odd', 1, 1),
 ('They', 2, 1), ('could', 2, 1), ('only', 2, 1), ('say', 2, 1),
 ('it', 2, 1), ('just', 2, 1), ('"happened', 2, 1), ('to', 2, 1),
 ('happen"', 2, 1), ('and', 2, 1), ('was', 2, 1), ('not', 2, 1),
 ('very', 2, 1), ('likely', 2, 1), ('to', 2, 1), ('happen', 2, 1),
 ('again.', 2, 1)]

以上是关于在python中的列表列表中使用已定义的函数的主要内容,如果未能解决你的问题,请参考以下文章

python中函数调用定义时星号的含义(*列表,**字典)

领域对象列表函数未定义,即使对象已定义且列表已填充

python中怎样查看已加载的命名空间中所有变量和函数

好好学python · 你真的会列表吗(列表推导式质检员)

好好学python · 你真的会列表吗(列表推导式质检员)

python函数定义来查找列表中的所有值是不是都是奇数或都不是[关闭]