我在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}})
答案 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))