我有一个棘手的问题 - 我想只计算那些说“红色”的词,并避免那些名字中有红色的词,但不仅仅是'红色'。例如,我想避免计算'redish','darkred'等等。我的代码如下,但我没有太多的运气。输入将是例如:'red','redish','darkred'
我知道我的代码只是在寻找'红色'所以我想我的问题是如何使用split函数来拉出'red'并避免其他所有内容?
cars = input("Cars: ") #'redish, darkred, sortofred, red'
cars_red = cars.split('red') #I only want to count the one 'red'
print('red:', cars_red.count(cars_red))
谢谢,
答案 0 :(得分:2)
请尝试以下代码:
cars = input("Cars: ")
cars_red = cars.split(', ')
count = 0
for word in cars_red:
if word == 'red':
count += 1
print('red:',count)
输入:
redish, darkred, sortofred, red
输出
red: 1
答案 1 :(得分:0)
请记住,split()用于根据分隔符“拆分”字符串。它可用于创建颜色列表。然后你需要考虑如何计算所有匹配'红色'。
一种方法是使用reduce()函数进行计数:
# parse input into cars list
cars = input("Cars: ").split(', ')
# Prepend initial count of 0 and accumulate by matching 'red'
cars.insert(0, 0)
count = reduce(lambda count, color: count + (color == 'red'), cars)
print 'red: ' + str(count)
同样可以通过多种方式完成,包括使用for循环。
答案 2 :(得分:0)
要使用特定颜色的汽车进行过滤列表,并对其进行计数,您可以使用filter
函数,该函数允许使用非常简洁的代码。
假设您使用的是CSV格式,可能有一些空格(如输入示例中所示)以使用strip
进行修剪,main
的可能解决方案如下所示:
def filter_cars_by_color(cars, color):
return list(filter(lambda car: car == color, [car.strip() for car in cars.split(',')]))
if __name__ == "__main__":
cars = input("Cars: ")
color = input("Color to search:")
cars_red = filter_cars_by_color(cars, color)
print('Number of cars exactly %s: %d' % (color, len(cars_red)))
请注意,在答案中,我指的是python 3.x,因为即使没有标记,似乎OP正在使用python 3.x.如果使用python 2.7,则应使用raw_input
而不是this amazing answer,否则输入将被处理为python表达式。
答案 3 :(得分:-2)
尝试:
var valueToLookup = "red";
var count = cars.filter(function(v) { return v === valueToLookup; }).length;