如何让这个Python函数返回一个字符串而不是一个包含一个字符串的列表?
<body>
<form id="upload">
<input type="file" id="vidInput">
<span id="submitFile"
style="-webkit-appearance:button;-moz-appearance:button;padding:4px;font-family:arial;font-size:12px">Upload Video</span>
</form>
<script>
function uploadMyVid(event) {
// FETCH FILEIST OBJECTS
var vidFile = document.getElementById('vidInput').files;
var xmlhttp = new XMLHttpRequest;
xmlhttp.open('PUT', "upload_link_secure");
var data = new FormData();
data.append("file", vidFile[0], vidFile[0].name);
xmlhttp.send(data);
}
var button = document.getElementById("submitFile");
button.addEventListener("click", uploadMyVid);
</script>
</body>
一些测试用例:
def num_vowels(s):
""" returns the number of vowels in the string s
input: s is a string of 0 or more lowercase letters
"""
if s == '':
return 0
else:
num_in_rest = num_vowels(s[1:])
if s[0] in 'aeiou':
return 1 + num_in_rest
else:
return 0 + num_in_rest
#most vowels returns a list not a string
def most_vowels(wordlist):
'''Takes a list of strings called wordlist and returns the string in
the list with the most vowels.'''
list_of_num_vowels = [num_vowels(x) for x in wordlist]
max_val = max(list_of_num_vowels)
return [x for x in wordlist if num_vowels(x) == max_val]
输出:most_vowels(['vowels', 'are', 'amazing', 'things'])
'amazing'
输出:most_vowels(['obama', 'bush', 'clinton'])
谢谢!
答案 0 :(得分:1)
您的most_vowels()
函数使用list comprehension过滤掉匹配的值并返回新列表。您可以通过两种方式直接输出字符串。
第一种方法是从理解结果中索引第一个结果。
return [x for x in wordlist if num_vowels(x) == max_val][0]
另一个选项,如果你认为你可能得到多个结果但仍想要一个字符串,那就是用逗号(或其他分隔符)将任何结果加入到字符串中。
return ','.join([x for x in wordlist if num_vowels(x) == max_val])
这会将['first', 'second']
转换为'first,second'
。
答案 1 :(得分:0)
通过将num_vowels
作为key
传递,您可以通过比较元音的数量而不是通常的字符串排序来直接从max
得到答案:
def most_vowels(wordlist):
return max(worldlist, key=num_vowels)
或者,您找到max_val
元音的方式最多,可以使用next
和理解过滤器:
return next(word for word in wordlist
if num_vowels(word) == max_val)
答案 2 :(得分:0)
你的most_vowels
功能重新发明轮子。 Python已经为您提供了一个更简单的工具 - 使用带有可选key
参数的max
,并且只选择具有最多元音的单词:
def most_vowels(wordlist):
return max(wordlist, key=num_vowels)