错误:MethodError:'length'没有匹配长度的方法(:: Filter {Function,Tuple {...}})

时间:2016-02-19 08:16:43

标签: filter tuples list-comprehension julia

我在here中读到你不能filter!一个元组,因为它是不可变的,但你可以filter它。那么,为什么这会给我错误?

a = tuple([collect(1:10)]...)
b = [x for x in filter(y -> y % 2 == 0, a)]
ERROR: MethodError: `length` has no method matching length(::Filter{Function,Tuple{Int64}})

1 个答案:

答案 0 :(得分:1)

并不是你无法过滤它,会发生什么length(由列表推导调用)没有方法(至少),filter返回的是什么,这是一个可迭代的Filter类型。您可以将过滤器包装在collect中,或者更好,简化整个操作:

a = tuple(collect(1:10)...)
b1 = [x for x in collect(filter(y -> y % 2 == 0, a))]
b2 = collect(filter(y -> y % 2 == 0, a))