我们已经开始在课堂上做列表了,因为之前的问题/答案在过去帮助了我,所以我来这里有点困惑。
第一个问题是总结列表中的所有负数,我认为我做对了,但只是想仔细检查。
import random
def sumNegative(lst):
sum = 0
for e in lst:
if e < 0:
sum = sum + e
return sum
lst = []
for i in range(100):
lst.append(random.randrange(-1000, 1000))
print(sumNegative(lst))
对于第二个问题,我对如何编写它有点困惑。问题是: 计算列表中出现的单词数量,包括第一次出现的单词“sap”。我假设它是一个随机列表,但没有给出太多信息,所以就这样做了。
我知道结局会很相似但不知道最初的部分会是怎样的,因为它的字符串与数字相对。
我编写了一个类内问题的代码,用于计算列表中有多少奇数(这是随机列表,所以假设它也是随机的那个问题)并获得:< / p>
import random
def countOdd(lst):
odd = 0
for e in lst:
if e % 2 = 0:
odd = odd + 1
return odd
lst = []
for i in range(100):
lst.append(random.randint(0, 1000))
print(countOdd(lst))
我究竟如何更改此符合第二个问题的标准?我只是在这方面感到困惑。谢谢。
答案 0 :(得分:2)
总结数字的代码看起来很好!我可能会建议您在可以手动检查的列表上进行测试,例如:
print(sumNegative([1, -1, -2]))
同样的逻辑将适用于您的随机列表。
关于countOdd
功能的说明,您似乎缺少=
(==
检查是否相等,=
是否已分配),代码似乎算偶数,不奇怪。代码应该是:
def countOdd(lst):
odd = 0
for e in lst:
if e%2 == 1: # Odd%2 == 1
odd = odd + 1
return odd
至于你的第二个问题,你可以使用一个非常相似的功能:
def countWordsBeforeSap(inputList):
numWords = 0
for word in inputList:
if word.lower() != "sap":
numWords = numWords + 1
else:
return numWords
inputList = ["trees", "produce", "sap"]
print(countWordsBeforeSap(inputList))
为了解释上述问题,countWordsBeforeSap
功能:
"sap"
,则会递增计数器并继续"sap"
,那么它会从函数通过传入您要检查的单词,该功能可能更为通用:
def countWordsBefore(inputList, wordToCheckFor):
numWords = 0
for word in inputList:
if word.lower() != wordToCheckFor:
numWords = numWords + 1
else:
return numWords
inputList = ["trees", "produce", "sap"]
print(countWordsBeforeSap(inputList, "sap"))
如果您检查的单词来自单个字符串,那么您最初需要将split
字符串转换为单个单词,如下所示:
inputString = "Trees produce sap"
inputList = inputString.split(" ")
将初始字符串拆分为由空格分隔的单词。
希望这有帮助! 汤姆
答案 1 :(得分:0)
def count_words(lst, end="sap"):
"""Note that I added an extra input parameter.
This input parameter has a default value of "sap" which is the actual question.
However you can change this input parameter to any other word if you want to by
just doing "count_words(lst, "another_word".
"""
words = []
# First we need to loop through each item in the list.
for item in lst:
# We append the item to our "words" list first thing in this loop,
# as this will make sure we will count up to and INCLUDING.
words.append(item)
# Now check if we have reached the 'end' word.
if item == end:
# Break out of the loop prematurely, as we have reached the end.
break
# Our 'words' list now has all the words up to and including the 'end' variable.
# 'len' will return how many items there are in the list.
return len(words)
lst = ["something", "another", "woo", "sap", "this_wont_be_counted"]
print(count_words(lst))
希望这有助于您更好地理解列表!
答案 2 :(得分:0)
您可以有效地使用列表/生成器理解。以下是快速和内存效率。
1。否定总和:
THE_TYPE
2. sap之前的单词数量:与您的样本列表一样,它假设列表中没有数字。
print(sum( i<0 for i in lst))
如果是随机列表。过滤字符串。查找print(lst.index('sap'))
sap
3. 奇数的计数:
l = ['a','b',1,2,'sap',3,'d']
l = filter(lambda x: type(x)==str, l)
print(l.index('sap'))