在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
我试图使用许多方法在我的列表列表中应用此函数,但它们都不起作用。
- 下面给出了AttributeError:'list'对象没有属性'split'
list(map(len,filtered_wordList))
- 这给出了一个TypeError:map()缺少1个必需的位置参数:'txt'
[map(item) for item in filtered_wordList]
- 这给出了一个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中的列表列表中使用已定义的函数的主要内容,如果未能解决你的问题,请参考以下文章