【问题标题】:Is there a Swift equivalent to the 'Filter' function in Python?是否有与 Python 中的“过滤器”功能等效的 Swift?
【发布时间】:2015-11-15 19:56:53
【问题描述】:

在 python 中,使用“filter”函数从字符串/列表中删除不需要的项目非常简单,该函数可以与“lambda”函数一起使用。在python中,很简单:

a = "hello 123 bye-bye !!£$%$%"
b = list(filter(lambda x: x.isalpha(), a))
c = "".join(b)
print(c) #Which would print "hellobyebye"

有没有什么方法可以在不先转换为 unicode 然后检查 unicode 值是否在某个范围内的情况下轻松地快速复制它?另外,swift中有没有类似“lambda”的东西?

【问题讨论】:

  • List comprehension in Swift 的可能重复项
  • 注意:以上链接中的列表推导包含一个过滤表达式。
  • 我不能 100% 确定这将如何工作。你能详细说明一下吗?
  • 链接的问题和答案对我来说似乎很清楚,而且我已经学习了 Swift 大约五分钟(对于这个问题)。我认为您需要花一些时间在the documentation 或教程上。
  • 顺便说一句,''.join(x for x in a if x.isalpha())。在某些情况下,我会使用 mapfilter,但如果您将它们与 lambda 一起使用,那么等效的理解几乎总是会更好读。

标签: python swift unicode lambda swift-playground


【解决方案1】:

是的,在 Swift 中有一个等效的 Filter 函数:

过滤器

过滤器方法采用一个函数(includeElement),给定一个 数组中的元素,返回一个 Bool 表示该元素是否 应包含在结果数组中。例如,删除所有 numbers 数组中的奇数可以这样完成:

let numbers = [ 10000, 10303, 30913, 50000, 100000, 101039, 1000000 ]
let evenNumbers = numbers.filter { $0 % 2 == 0 }
// [ 10000, 50000, 100000, 1000000 ]

更多关于Map, Filter and Reduce in Swift

【讨论】:

  • '$0' 有什么作用?这是否充当每个单独列表元素的占位符?
  • 请参阅the documentation on closures,在标题为“简写参数名称”的部分下。
猜你喜欢
  • 1970-01-01
  • 2014-04-16
  • 1970-01-01
  • 1970-01-01
  • 2011-03-31
  • 1970-01-01
  • 1970-01-01
  • 2020-09-07
  • 2023-03-14
相关资源
最近更新 更多