Swift基础02

Swift基础02

字符串,数组和字典


字符串的定义

  • var定义一个可变的字符串,用 let 定义一个不可变的字符串
  • 定义字符串的两种方法:字面量方法和初始化方法
var str = "hellowrold"
str.insert("a", atIndex: str.startIndex)
//result: "ahellowrold"

let str2 = "hello,world" //定义一个不可变的字符串
//str2.insert("a", atIndex: str.startIndex) //这句会出错

//用字面量方法定义一个空的字符串
var str3 = ""

//用初始化方法定义一个空的字符串
var str4: String = String() //创建一个空的字符串对象
str4.insert("a", atIndex: str.startIndex)

字符串的拼接

//1. 字符串和字符串的拼接
var str = "hellowrold"
var stra = "hello"
var strb = "world"
var strc = stra + strb //strc = "hello world"
strc += str

//result: strc = "helloworldahelloworld"

//2. 字符串常量和变量拼接
var strxiaowang = "xiaowang"
var age = 15
var stbd = "你好吗\(strxiaowang),你是\(age)岁吗"
print(stbd)

//3.字符串的格式化
var h = 5
var m = 5
var s = 5
let time = String(format: "%02d:%02d:%02d", h, m, s)
let time2 = String(format: "%02d:%02d:%02d", arguments: [h, m, s])

字符串的一些操作方法

var straaa = "hello,world"
//注意,以下获得的偏移值不是Int类型,不能直接拿来做运算,需要调用方法进行修改
var startIndex = straaa.startIndex //获取字符串的开始偏移值:0
var endIndex = straaa.endIndex //获取字符串的结束偏移值后一位:11
var lastIndex = endIndex.advancedBy(-1) //对偏移值进行-1运算:10
var fourth = startIndex.advancedBy(4) //对偏移值进行+4运算:4
var count = straaa.characters.count //统计字符的个数:11
//1. 截取字符串
var range = startIndex...fourth //0..<5
var straa1 = straaa.substringWithRange(range)

//2. 插入字符串
let insert = "hello"
straaa.insertContentsOf(insert.characters, at: startIndex)

//3. 替换字符串
//生成一个新的字符串之前的字符串不受影响
let strbbb = straaa.stringByReplacingOccurrencesOfString("world", withString: "xiaowang")

print(straaa)

//3. 判断它是否有前缀
let hasprefix = straaa.hasPrefix("he")

//4. 判断它是否有后缀
let hassuffix = straaa.hasSuffix("ld")

//5. 删除操作
straaa.removeRange(range)

// MARK : 字符串的比较
// 直接使用 == 或者 !=
let strcc = "hello"
let strdd = "hello"

if strcc == strdd {
    print("索得死勒")
}

数组

  • 用 var 创建一个可变数组, 用 let 创建一个不可变的数组
  • 如果我们用字面量方式创建一个空数组需要指定数据的类型
//用字面量的方式创建数组
let arr:[String] = ["hello", "world"]
var arr1:[Int] = []
arr1.append(1)

var arr2:[NSObject] = [] //表示数组可以接收任意的类型
arr2.append(1)
arr2.append("hello")

//用初始化的方法定义一个空数组
//append 是往数组最后面添加一个元素
var arr3:[String] = Array()
arr3.append("dog")
arr3.append("cat")
arr3.append("duck")
arr3.append("chicken")

//用拼接的方式生成一个新的数组
var arr4 = arr + arr3

数组的遍历

// MARK : 数组的遍历
//1. 原始的 for 循环的方式遍历数组
//在 swfit 里面,基本的运算符,需要两边都加空格。
for var i = 0; i < arr3.count; i++ {
    print(arr3[i])
}

//2. 用 for in 的方式遍历数组
for item in arr3 {
    print(item)
}

//3. 用 enumerate() 来遍历数组
//可以同时拿到 index 的 value
for item in arr3.enumerate() {  //enumerate是一个结构体,有两个元素
//    item.index 元素的索引
//    item.element 元素的值
    print("index:\(item.index), value:\(item.element)")
}

//4. 数组的倒序遍历
for item in arr3.reverse() {
    print("====\(item)")
}

for item in arr3.reverse().enumerate() {
    //    item.index
    //    item.element
    print("index:\(item.index), value:\(item.element)")
}

//5. 生成一个倒序的数组
//arr3.reverse()不会改变arr3的顺序,会新建一个数组对象
let reversArr3 = Array(arr3.reverse())

数组的操作

//增
arr3.append("goat")

//删
let remoed = arr3.removeAtIndex(2)

//改
arr3[0] = "cow"
print(arr3)

//查
let third = arr3[2]
let count = arr3.count

字典的定义

  • 用 let 创建一个不可变的字典,用 var 创建一个可变的字典
//1. 用字面量的方式创建一个字典
var dic = [1:"dog", 2: "cat", 3: "goat", 4: "duck"]
//用字面量的方式创建一个空的字典,需要先指定类型。[]里面需要加一个 :
var dic1:[Int: String] = [:]

//2. 用初始化的方式,来创建一个字典
var dic2:[NSObject: NSObject] = Dictionary()
dic2["1"] = "dog"
dic2["2"] = "cat"
dic2["3"] = "duck"
print(dic2)

字典的遍历

//MARK : 字典的遍历
//因为字典是无序的,所以通过以下方式无法遍历
//for var i = 0; i < dic.count; i++ {
//    print(<#T##items: Any...##Any#>)
//}

//1. 用 for in 的方式来遍历字典
for (key, value) in dic {
    print("key: \(key), value:\(value)")
}

//MARK : 字典的 keys 和 values
let keys = Array(dic.keys)
let arrays = Array(dic.values)

字典的操作

//MARK :字典的操作
//增
dic[5] = "snake"

//删
dic[5] = nil

//改
dic[1] = "bird"
print(dic)

//查
print(dic[6])
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值