我有两个数组:
fruitsArray = ["apple", "mango", "blueberry", "orange"]
vegArray = ["tomato", "potato", "mango", "blueberry"]
我如何获得这两个数组中的常见项目列表
ouptput = ["mango", "blueberry"]
我无法使用,if contains(array, string)
因为我想比较2个数组。
您还可以结合使用filter
和contains
:
let fruitsArray = ["apple", "mango", "blueberry", "orange"]
let vegArray = ["tomato", "potato", "mango", "blueberry"]
// only Swift 1
let output = fruitsArray.filter{ contains(vegArray, $0) }
// in Swift 2 and above
let output = fruitsArray.filter{ vegArray.contains($0) }
// or
let output = fruitsArray.filter(vegArray.contains)
我们考虑以下代码片段:
let array1: Array = ...
let array2: Array = ...
// `Array`
let commonElements = array1.filter(array2.contains)
// vs `Set`
let commonElements = Array(Set(array1).intersection(Set(array2)))
// or (performance wise equivalent)
let commonElements: Array = Set(array1).filter(Set(array2).contains)
我用Int
short和long String
s(10到100
Character
s)(全部随机生成)做了一些(人工)基准测试。我总是用array1.count == array2.count
我得到以下结果:
如果您不只critical #(number of) elements
转换为a,则更Set
可取
data | critical #elements
-------------|--------------------
Int | ~50
short String | ~100
long String | ~200
使用该Array
方法使用“蛮力”搜索,该搜索具有时间复杂度
O(N^2)
,N = array1.count = array2.count
而与该Set
方法相反O(N)
。然而从转换Array
到Set
和背部是这解释了增加大数据非常昂贵的`critical
对于Array
具有约100个元素的小s,该Array
方法很好,但对于较大的s,则应使用该Set
方法。
如果您想多次使用此“常见元素”运算,则建议 仅* 在可能的情况下使用Set
s (元素的类型必须为)。 *Hashable
从Array
到Set
的转换比较昂贵,而从Set
到的转换Array
则非常便宜。
filter
与with一起使用比在以下.filter(array1.contains)
情况下性能更快.filter{ array1.contains($0) }
:
O(N)
)问题内容: 我有一个像这样的数组: 我想从该数组中获取3个随机元素。我来自C#,但是我不确定该从哪里开始。我想我应该先对数组进行随机排序,然后再从中选择前3个项目? 我尝试使用以下扩展名将其改组: 但随后在“ shuffle()”的位置说“’()’不可转换为’[Int]’”。 为了挑选一些元素,我使用: 到目前为止看起来还不错。 如何洗牌?还是有人对此有更好/更优雅的解决方案? 问题答案: Xco
问题内容: 考虑以下: 如何获取列表中的元素数量? 问题答案: 该函数可以与Python中的几种不同类型一起使用-内置类型和库类型。例如: 官方2.x文档在这里: 官方3.x文档在这里:
问题内容: 我有一个像下面这样的列表,其中第一个元素是id,另一个是字符串: 我只想从此元组列表创建ID列表,如下所示: 我将使用此列表,因此它必须是整数值的列表。 问题答案:
问题内容: 假设我有以下代码: 我可以手动调用下一个函数多次,以使2个数组按“相同名称”分组。 问题是我不知道变量值,在这种情况下为“ dinner”和“ lunch”,因此我想按名称自动对这个statEvents数组进行分组,所以当名称不同时,我会得到尽可能多的数组。 我该怎么办? 问题答案: 从Swift 4开始,此功能已添加到标准库中。您可以这样使用它: 斯威夫特3: 不幸的是,上面的函数复
问题内容: 考虑以下: 如何获取列表中的元素数量? 问题答案: 该函数可与Python中的几种不同类型一起使用-内置类型和库类型。例如: 官方2.x文档在这里: 官方3.x文档在这里:
代码不止一次返回0和公共数字。我想让它返回一个数组与公共数字一次!那么,如何返回一个数组,数组中的数字对两个数组都是通用的。我想返回{2,7,4}-类似这样的东西。当我试图返回数组时,我总是出现越界异常。谢谢,巴里