我在列表(10..1000)上有一些过滤器。 我想要一个函数对象列表,遍历此列表并将该过滤器应用于(10..1000)。 也许以后再选择一些过滤器。
fun main(args: Array<String>) {
var sol = (10..1000).toList().filter(lastDigitIsLength ).filter(no7andNo1 ).filter(isEvenAndGreater1).filter(first2DigitsOddCrossSumLess10 ).filter(isPrime )
println("The number is $sol")
}
/* The functions exist
答案 0 :(得分:1)
很少有这样做的方法。
我在示例中列出了它们以及一些一般性的评论。
import ipywidgets as widgets
data = {"label_1":"data_1", "label_2":"data_2", "label_3":"data_3"}
names = []
checkbox_objects = []
for key in data:
checkbox_objects.append(widgets.Checkbox(value=False, description=key))
names.append(key)
arg_dict = {names[i]: checkbox for i, checkbox in enumerate(checkbox_objects)}
ui = widgets.VBox(children=checkbox_objects)
selected_data = []
def select_data(**kwargs):
selected_data.clear()
for key in kwargs:
if kwargs[key] is True:
selected_data.append(key)
print(selected_data)
out = widgets.interactive_output(select_data, arg_dict)
display(ui, out)
答案 1 :(得分:1)
对不起,也许我误解了你的问题。您是否要将过滤器列表应用于整数列表?如果是这样,可以这样做:
fun filter(list: List<Int>, filters: List<(Int) -> Boolean>): List<Int> {
var result = list
for (filter in filters) {
result = result.filter(filter)
}
return result
}
因此您可以将函数重写为:
fun main() {
val sol = filter((10..1000).toList(), listOf(::lastDigitIsLength, ::no7andNo1, ::isEvenAndGreater1))
println("The number is $sol")
}