swift学习之数组

  首先数组的定义:以有序的方式存储同样类型的值

(1)数组的简写(shorthand)语法

你能够通过Array<Element>,在这里,Element时数组存储元素的值的类型。也能够通过中括号来写[Element]

(2)创建一个空数组

        var emptyArr = [Int]()(这里使用初始化方法创建一个Int型的空数组)
        emptyArr.append(3)
        emptyArr = [] (这里是用字面语句创建空数组)
note:emptyArr is now an empty array,but is still an type of [Int]

另外,就是我直接用var emptyArr = []创建一个空数组会产生一个错误,报了这是一个不可变数组,大家能够试试

(3)创建一个带有默认值的数组

swift提供了一种初始化一个数组。而且这个数组带有同样的默认值

    var defaultArr = [Double](count: 3, repeatedValue: 0.0)(值类型是double型的)
    println(defaultArr)

//the println is [0.0, 0.0, 0.0]

(4)通过add两个数组创建一个新的数组

通过(+)号操作将两个已经存在的同样类型的数组创建一个新的数组

        var anotherArr = [Double](count: 3, repeatedValue: 2.5)
        var newArr = defaultArr + anotherArr
        println(newArr)

//the result is [0.0, 0.0, 0.0, 2.5, 2.5, 2.5]

(5)用字面量创建一个数组

中括号中面放一系列的值,以逗号分隔

        var shopping:[String] = ["Eggs","Milk"]

这个声明了一个仅仅存储字符型的数组,由swift的类型判断,我们能够不用写明类型用字面量语法初始化数组存放同样类型的值时,因此,上面的样例能够更加简单点写

       var shopping: = ["Eggs","Milk"]

(6)訪问和改变数组

我们学会了创建一个数组,那么接下来就要想怎么訪问一个数组,又怎么改变一个数组呢?

訪问和改变数组,我们能够通过方法和属性,或者下标语法

我们能够通过数组的仅仅读属性(.count)知道数组的元素个数

        println("The shopping list contains \(shoppingList.count) items")    (The shopping list contains 2 items)

我们能够通过数组的Boolen属性(.isEmpty)检查数组的个数和0是否相等

if shoppingList.isEmpty{
            println("The shopping list is empty")
        }else{
            println("The shopping list isn't empty")
        }

我们能够通过array's append(_:)方法在数组的最后面加入元素

        shoppingList.append("Flour")
        println(shoppingList)       ([Eggs, Milk, Flour])

另一种方法。我们也能够通过(+=)操作加入一个或多个元素

        shoppingList += ["Baking Powder"]
        shoppingList += ["Chocolate Spread","Cheese","Butter"]
        println(shoppingList)  ([Eggs, Milk, Flour, Baking Powder, Chocolate Spread, Cheese, Butter])

能够通过下标语法检索一个数组的值,在数组名后面加上中括号。在里面写上你想要的值所在的下标就能够取出相应的下标值了,和oc一样。第一个元素也是从0開始算起

       var firstItem = shoppingList[0]
        println(firstItem)  (firstItem is equal to "Eggs")

你也能够通过下标语法改变相应索引处的值

        shoppingList[0] = "Six Eggs"
        println(shoppingList)   ([Six Eggs, Milk, Flour, Baking Powder, Chocolate Spread, Cheese, Butter])和上面对照确实改变了第一个元素

在swift中能够通过下标语法改变一定范围的值,即使替代的值的长度和你替代的范围长度不同,如

        shoppingList[4...6] = ["Bananas","Apples"]
        println(shoppingList)

如今打印的结果是[Six Eggs, Milk, Flour, Baking Powder, Bananas, Apples]也就是数组有6个元素

        shoppingList[4...6] = ["Bananas","Apples","Bananas","Apples"]

如今数组有8个元素了

可是请注意你不能通过下标语法给数组加入元素

往数组中插入元素我们能够通过调用insert(_:atIndex:)方法

        shoppingList.insert("Maple Syrup", atIndex: 0)
        println(shoppingList)      ([Maple Syrup, Six Eggs, Milk, Flour, Baking Powder, Bananas, Apples, Bananas, Apples])

相同的道理,能够通过调用removeAtIndex(_:)方法移除元素。而且能够接收被移除的元素(假如你不须要。就不用接收,直接忽略就好了)

        var removedItem = shoppingList.removeAtIndex(0)
        println(shoppingList)    ([Six Eggs, Milk, Flour, Baking Powder, Bananas, Apples, Bananas, Apples])

调用removeRange移除一定范围内的数组

        var removedRangeItem: () = shoppingList.removeRange(6...7)
        println(shoppingList)      ([Six Eggs, Milk, Flour, Baking Powder, Bananas, Apples])

调用removeLast()语法移除数组最后一个元素。而不是通过调用removeAtIndex(_:)方法。以免遍历数组一遍要

        shoppingList.removeLast()
        println(shoppingList)

数组的遍历

我们能够通过for-in循环遍历

        println(shoppingList)
        for item in shoppingList{
            println(item)
(Six Eggs
Milk
Flour
Baking Powder
Bananas)
        }

假设你须要每一个元素的下标和相应的值,你须要用enumerate()方法来遍历数组,这样返回一个元组,包含元素的下标和相应的值

for (index,value) in enumerate(shoppingList){
            println("Item\(index):\(value)")
        }

Item0:Six Eggs
Item1:Milk
Item2:Flour
Item3:Baking Powder
Item4:Bananas
这是swift2.0之前的写法,2.0之后用的是

        for (index,value) in shoppingList.enumerate(){
            println("Item\(index):\(value)")
        }

这种方法


借鉴:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/CollectionTypes.html#//apple_ref/doc/uid/TP40014097-CH8-ID105   

转载于:https://www.cnblogs.com/clnchanpin/p/6962239.html

标题基于SpringBoot+Vue的学生交流互助平台研究AI更换标题第1章引言介绍学生交流互助平台的研究背景、意义、现状、方法与创新点。1.1研究背景与意义分析学生交流互助平台在当前教育环境下的需求及其重要性。1.2国内外研究现状综述国内外在学生交流互助平台方面的研究进展与实践应用。1.3研究方法与创新点概述本研究采用的方法论、技术路线及预期的创新成果。第2章相关理论阐述SpringBoot与Vue框架的理论基础及在学生交流互助平台中的应用。2.1SpringBoot框架概述介绍SpringBoot框架的核心思想、特点及优势。2.2Vue框架概述阐述Vue框架的基本原理、组件化开发思想及与前端的交互机制。2.3SpringBoot与Vue的整合应用探讨SpringBoot与Vue在学生交流互助平台中的整合方式及优势。第3章平台需求分析深入分析学生交流互助平台的功能需求、非功能需求及用户体验要求。3.1功能需求分析详细阐述平台的各项功能需求,如用户管理、信息交流、互助学习等。3.2非功能需求分析对平台的性能、安全性、可扩展性等非功能需求进行分析。3.3用户体验要求从用户角度出发,提出平台在易用性、美观性等方面的要求。第4章平台设计与实现具体描述学生交流互助平台的架构设计、功能实现及前后端交互细节。4.1平台架构设计给出平台的整体架构设计,包括前后端分离、微服务架构等思想的应用。4.2功能模块实现详细阐述各个功能模块的实现过程,如用户登录注册、信息发布与查看、在线交流等。4.3前后端交互细节介绍前后端数据交互的方式、接口设计及数据传输过程中的安全问题。第5章平台测试与优化对平台进行全面的测试,发现并解决潜在问题,同时进行优化以提高性能。5.1测试环境与方案介绍测试环境的搭建及所采用的测试方案,包括单元测试、集成测试等。5.2测试结果分析对测试结果进行详细分析,找出问题的根源并
内容概要:本文详细介绍了一个基于灰狼优化算法(GWO)优化的卷积双向长短期记忆神经网络(CNN-BiLSTM)融合注意力机制的多变量多步时间序列预测项目。该项目旨在解决传统时序预测方法难以捕捉非线性、复杂时序依赖关系的问题,通过融合CNN的空间特征提取、BiLSTM的时序建模能力及注意力机制的动态权重调节能力,实现对多变量多步时间序列的精准预测。项目不仅涵盖了数据预处理、模型构建与训练、性能评估,还包括了GUI界面的设计与实现。此外,文章还讨论了模型的部署、应用领域及其未来改进方向。 适合人群:具备一定编程基础,特别是对深度学习、时间序列预测及优化算法有一定了解的研发人员和数据科学家。 使用场景及目标:①用于智能电网负荷预测、金融市场多资产价格预测、环境气象多参数预报、智能制造设备状态监测与预测维护、交通流量预测与智慧交通管理、医疗健康多指标预测等领域;②提升多变量多步时间序列预测精度,优化资源调度和风险管控;③实现自动化超参数优化,降低人工调参成本,提高模型训练效率;④增强模型对复杂时序数据特征的学习能力,促进智能决策支持应用。 阅读建议:此资源不仅提供了详细的代码实现和模型架构解析,还深入探讨了模型优化和实际应用中的挑战与解决方案。因此,在学习过程中,建议结合理论与实践,逐步理解各个模块的功能和实现细节,并尝试在自己的项目中应用这些技术和方法。同时,注意数据预处理的重要性,合理设置模型参数与网络结构,控制多步预测误差传播,防范过拟合,规划计算资源与训练时间,关注模型的可解释性和透明度,以及持续更新与迭代模型,以适应数据分布的变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值