一、Objective-C
(1)標準的c風格
for (int i = 0; i < 5; i++) {NSLog(@"i = %d", i);
}
(2)for in循環。
NSArray *array = @[@"apple", @"banana", @"orange"];
for (NSString *fruit in array) {NSLog(@"%@", fruit);
}//這個遍歷輸出的是值,而不是健
(3)基于塊的枚舉(Block-Based Enumeration)
Objective-C 提供了基于塊的枚舉方法,例如?enumerateObjectsUsingBlock:
,可以遍歷集合類并執行塊中的代碼。
NSArray *array = @[@"apple", @"banana", @"orange"];
[array enumerateObjectsUsingBlock:^(NSString *fruit, NSUInteger idx, BOOL *stop) {NSLog(@"%@ at index %lu", fruit, (unsigned long)idx);
}];apple at index 0
banana at index 1
orange at index 2
這個類似于python中的for index,item in enumerate(strkk):,可以得到索引值以及內容(值),而且可以通過設置stop值==yes來終止循環
(4)while循環
int i = 0;
while(i<5){NSlog(@"%d",i)i++;
}
//輸出:0 1 2 3 4
(5)do...while循環
int i= 0
do{NSLog(@"%d",i)// 0 1 2 3 4 i++}while(i<5)
二、Python
(1)range()函數
??????for???in range(起始, 結束, 步長)
string = "0123456789"
for i in range(0,len(string),2):print(f'輸出的數據i==={i}')#輸出的數據i===0
#輸出的數據i===2
#輸出的數據i===4
#輸出的數據i===6
#輸出的數據i===8
注意range后面的參數,啟始、結束、步長,寫一個參數代表結束位置,不包括結束位置
對比 Objective-C:
-
類似于 Objective-C 的標準?
for
?循環(for (int i = 0; i < 5; i++)
)。 -
Python 的?
range()
?更簡潔,不需要手動管理循環變量。
(2)for in循環
fruits = ["apple", "banana", "orange"]
for fruit in fruits:print(fruit)
對比 Objective-C:
-
Objective-C 的快速枚舉(
for...in
)與 Python 的?for
?循環非常相似。 -
Python 的?
for
?循環更簡潔,不需要指定類型。
(3)enumerate()
?函數,也是for in的一種,類似
enumerate()
?函數用于在遍歷時同時獲取索引和值。
fruits = ["apple", "banana", "orange"]
for index, fruit in enumerate(fruits):print(f"Index: {index}, Fruit: {fruit}")Index: 0, Fruit: apple
Index: 1, Fruit: banana
Index: 2, Fruit: orange
對比 Objective-C:
-
類似于 Objective-C 的基于塊的枚舉(
enumerateObjectsUsingBlock:
)。 -
Python 的?
enumerate()
?更簡潔,不需要額外的語法。
(4)while循環
i = 0
while i < 5:print(f"i = {i}")i += 1
對比 Objective-C:
-
與 Objective-C 的?
while
?循環幾乎一致。 -
Python 不需要分號或大括號,使用縮進來定義代碼塊。
Python 的設計哲學強調簡潔性和可讀性。do...while
?循環的使用場景相對較少,而且可以通過?while True
?和?break
?輕松模擬,因此 Python 沒有專門引入?do...while
?語法。
(5)列表推導式(就是for in循環中寫表達式)
列表推導式是一種簡潔的創建列表的方式,可以替代簡單的?for
?循環。
[表達式 for 變量 in 可迭代對象]
squares = [x ** 2 for x in range(5)]
print(squares)#[0, 1, 4, 9, 16]
-
先看for in range函數,輸出的x在加上前面的表達式,然后最終生成值輸出
-
Python 的列表推導式非常簡潔,適合快速生成列表。
(6)zip()
?函數
zip()
?函數用于同時遍歷多個可迭代對象。
for 變量1, 變量2 in zip(可迭代對象1, 可迭代對象2):
? ? # 循環體
fruits = ["apple", "banana", "orange"]
prices = [1.0, 0.5, 0.8]
for fruit, price in zip(fruits, prices):print(f"Fruit: {fruit}, Price: {price}")#Fruit: apple, Price: 1.0
#Fruit: banana, Price: 0.5
#Fruit: orange, Price: 0.8
這個其實沒有特殊的,就是通過for in 同時遍歷多個對象
三、Swift
swift中先明白什么是區間運算符
-
閉區間運算符(n…m),n 不能大于 m,相當于數學的 [n, m]
-
半開區間運算符(n…<m),相當于數學的 [n, m)
(1)for in 區間
//開區間,輸出12到30包括12和30for index in 12...30{print("index==\(index)")}
//半開區間,輸出12到29,不包括30for index in 12..<30{print("index==\(index)")}
(2)stride
?函數(其實類似python中的for in range)
for 變量 in stride(from: 起始值, to: 結束值, by: 步長) {// 循環體}for index in stride(from: 0, to: 20, by: 3){print("輸出index==\(index)")}/*輸出index==0輸出index==3輸出index==6輸出index==9輸出index==12輸出index==15輸出index==18*/
-
?swift中的這for in 加區間運算以及 for in stride函數類似python的for in range 函數,
-
第一個函數swift使用范圍運算符(
..<
?或?...
),stride函數類似
python使用range(啟始、結束、步長),
(3)for-in
?循環
let fruits = ["apple", "banana", "orange"]
for fruit in fruits {print(fruit)
}
#輸出apple banana orange
-
Swift 的?
for-in
?跟python、oc中的差不多,都是輸出內容值,不是索引
(4)enumerated
循環
let fruits = ["apple", "banana", "orange"]
for (index, fruit) in fruits.enumerated() {print("Index: \(index), Fruit: \(fruit)")
}
-
類似于 Objective-C 的基于塊的枚舉(
enumerateObjectsUsingBlock:
)。 -
類似于python中的enumerate
for k,v in enumerate(strkk):print(f'k=={k},v={v}')
(5)while
循環
var i = 0while (i < 5) {print("i==\(i)")i += 1}
while函數也跟python、oc差不多,只是這里注意swift的語法,
-
Swift 不需要分號或括號,使用縮進來定義代碼塊
-
運算符之間需要有空格
-
不能使用oc中的i++,需要寫成 i += 1
(6)repeat-while
循環
var i = 0
repeat {print("i = \(i)")i += 1
} while i < 5
-
類似于 Objective-C 的?
do...while
?循環:
int i = 0;
do {NSLog(@"i = %d", i);i++;
} while (i < 5);
-
Swift 的?
repeat-while
?更簡潔。
(7)forEach
?方法
let fruits = ["apple", "banana", "orange"]
fruits.forEach { fruit inprint(fruit)
}
注意swift中forEach的寫法,注意區別與js的寫法
四、Kotlin
(1)類似swift的tride函數
kotlin中也有區間運算符..跟swift you區別
1、閉區間運算swift是...,但是kotlin是..和一個是三個點一個是兩個點
2、半封閉區間,swift是..<,kotlin用until
?表示左閉右開區間
//這個類似swift的...閉空間,輸出內容包括4
for (i in 0..4) {println("i = $i")
}//下面這個是until表示半封閉空間,不包括10 ,加了步長step
for (i in 0 until 10 step 2) {println("i = $i")
}
對比 Swift:
-
類似于 Swift 的?
stride
?函數:for i in stride(from: 0, to: 10, by: 2) {print("i = \(i)") }
(2)for-in
?循環
val fruits = listOf("apple", "banana", "orange")
for (fruit in fruits) {println(fruit)
}
對比 Swift:
-
類似于 Swift 的?
for-in
?循環。 -
Kotlin 的?
for
?循環更簡潔,不需要指定類型。
(3)withIndex
?方法(類似swift的enumerated
循環)
val fruits = listOf("apple", "banana", "orange")
for ((index, fruit) in fruits.withIndex()) {println("Index: $index, Fruit: $fruit")
}
對比 Swift:
-
類似于 Swift 的?
enumerated
?方法:
for (index, fruit) in fruits.enumerated() {print("Index: \(index), Fruit: \(fruit)")
}
-
Kotlin 的?
withIndex
?語法更簡潔。
(4)while
循環、do-while
?循環
while
循環、do-while
?循環kotlin跟swift以及oc都差不多,只是swift沒有do-while
?循環,而是叫做repeat-while,效果都一樣
var i = 0
while (i < 5) {println("i = $i")i++
}var i = 0
do {println("i = $i")i++
} while (i < 5)
Kotlin 的集合類提供了?forEach
?方法,用于遍歷集合中的每個元素。
(4)forEach
?方法
val fruits = listOf("apple", "banana", "orange")
fruits.forEach { fruit ->println(fruit)
}
對比 Swift:
-
類似于 Swift 的?
forEach
?方法:
fruits.forEach { fruit inprint(fruit)
}
五、Js
(1)標準的c風格
for (let i = 0; i < 5; i++) {console.log(`i = ${i}`);
}
(2)for...in
?循環
for...in
?循環會遍歷對象的所有可枚舉屬性(包括原型鏈上的屬性),對于字符串,for...in
?會遍歷字符串的索引(鍵),而不是直接遍歷字符。
(3)for...of
?循環
//這里遍歷的是索引for (const index in string) {console.log(`輸出的內容${index}`)}//for of遍歷的是內容值for (const element of string) {console.log(`輸出的內容${element}`)}
js中for in循環出來的是索引,想要得到內容值需要for of,但是這里要注意,雖然?for...in
?可以用于數組或字符串,但它會遍歷所有可枚舉屬性,包括原型鏈上的屬性,可能會導致意外行為。對于數組或字符串,更推薦使用?for
、for...of
?或?forEach
?等方法,比如:
// 給字符串的原型添加一個屬性
String.prototype.customProp = "test";const str = "hello";
for (const index in str) {console.log(`Index: ${index}, Character: ${str[index]}`);
}Index: 0, Character: h
Index: 1, Character: e
Index: 2, Character: l
Index: 3, Character: l
Index: 4, Character: o
Index: customProp, Character: t
我們看到它不止是遍歷出了hello還遍歷出了customProp屬性
(4)while
循環、do-while
?循環
while
循環、do-while
?循環kotlin跟swift以及oc都差不多,只是swift沒有do-while
?循環,而是叫做repeat-while,效果都一樣
(5)forEach
?方法
const fruits = ["apple", "banana", "orange"];
fruits.forEach((fruit) => {console.log(fruit);
});
(6)map
?方法(針對數組)
const 新數組 = 數組.map((變量) => {// 返回新值
});
const numbers = [1, 2, 3];
const squares = numbers.map((num) => num * num);
console.log(squares);
對比 Swift:
-
Swift 的?
map
?方法:JavaScript 的?map
?與 Swift 的?map
?非常相似。let numbers = [1, 2, 3] let squares = numbers.map { $0 * $0 } print(squares)
-
對比python,其實也很像python中的列表推到式
squares = [i ** 2 for i in range(1,4,1)] print(f'打印出squares=={squares}')