不同开发语言之for循环的用法、区别总结
一、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}')
相关文章:
不同开发语言之for循环的用法、区别总结
一、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 …...
MuBlE:为机器人操作任务规划提供了逼真的视觉观察和精确的物理建模
2025-03-05,由华为诺亚方舟实验室、捷克技术大学和帝国理工学院联合开发的MuBlE(MuJoCo and Blender simulation Environment)模拟环境和基准测试。通过结合MuJoCo物理引擎和Blender高质量渲染,为机器人操作任务规划提供了逼真的视…...
工具介绍《HACKBAR V2》
HackBar V2 是一款功能强大的浏览器渗透测试工具,主要用于测试 SQL 注入、XSS 漏洞、POST 传参等安全场景。以下是其核心功能、用法及实际案例操作的综合介绍: 一、核心功能与用法详解 1. 基础操作 Load URL 功能:将当前浏览器地址栏的 URL …...
ASP.NET Core 6 MVC 文件上传
概述 应用程序中的文件上传是一项功能,用户可以使用该功能将用户本地系统或网络上的文件上传到 Web 应用程序。Web 应用程序将处理该文件,然后根据需要对文件进行一些验证,最后根据要求将该文件存储在系统中配置的用于保存文件的存储中&#…...
2025年03月07日Github流行趋势
项目名称:ai-hedge-fund 项目地址url:https://github.com/virattt/ai-hedge-fund项目语言:Python历史star数:12788今日star数:975项目维护者:virattt, seungwonme, KittatamSaisaard, andorsk, arsaboo项目…...
JAVA入门——网络编程简介
自己学习时的笔记,可能有点水( 以后可能还会补充(大概率不会) 一、基本概念 网络编程三要素: IP 设备在网络中的唯一标识 端口号 应用软件在设备中的唯一标识两个字节表示的整数,0~1023用于知名的网络…...
Cursor + IDEA 双开极速交互
相信很多开发者朋友应该和我一样吧,都是Cursor和IDEA双开的开发模式:在Cursor中快速编写和生成代码,然后在IDEA中进行调试和优化 在这个双开模式的开发过程中,我就遇到一个说大不大说小不小的问题: 得在两个编辑器之间来回切换查…...
3.3.2 用仿真图实现点灯效果
文章目录 文章介绍Keil生成.hex代码Proteus仿真图中导入.hex代码文件开始仿真 文章介绍 点灯之前需要准备好仿真图keil代码 仿真图参考前文:3.3.2 Proteus第一个仿真图 keil安装参考前文:3.1.2 Keil4安装教程 keil新建第一个项目参考前文:3.1…...
点云软件VeloView开发环境搭建与编译
官方编译说明 LidarView / LidarView-Superbuild GitLab 我的编译过程: 安装vs2019,windows sdk,qt5.14.2(没安装到5.15.7),git,cmake3.31,python3.7.9,ninja下载放到…...
Java入门:环境搭建与第一个HelloWorld程序
一、环境搭建前的准备 1. JDK vs JRE的区别 JRE(Java Runtime Environment):只能运行Java程序JDK(Java Development Kit):包含JRE 开发工具(javac/java等) ❗ 结论:开…...
PDF处理控件Aspose.PDF,如何实现企业级PDF处理
PDF处理为何成为开发者的“隐形雷区”? “手动调整200页PDF目录耗时3天,扫描件文字识别错误导致数据混乱,跨平台渲染格式崩坏引发客户投诉……” 作为开发者,你是否也在为PDF处理的复杂细节消耗大量精力?Aspose.PDF凭…...
大白话如何利用 CSS 实现一个三角形?原理是什么?
大白话如何利用 CSS 实现一个三角形?原理是什么? 答题思路 先说明实现三角形的方法基础:即利用 CSS 中元素的边框特性来构建三角形,让读者对整体思路有个初步概念。详细阐述具体的实现步骤:包括设置元素的基本样式&a…...
js操作字符串的常用方法
1. 查找和截取 1.1 indexOf 作用:查找子字符串在字符串中首次出现的位置。 是否改变原字符串:不会改变原字符串。 返回值:如果找到子字符串,返回其起始索引(从 0 开始);如果未…...
PostgreSQL 如何有效地处理数据的加密和解密
对安全级别要求较高的项目,对敏感数据都要求加密保存。 在 PostgreSQL 中处理数据的加密和解密可以通过多种方式实现,以确保数据的保密性和安全性。 我这里提供几种常见的方法。 一、使用 pgcrypto 扩展 pgcrypto 是 PostgreSQL 中一个常用的扩展&am…...
《2025年软件测试工程师面试》消息队列面试题
消息队列 消息队列(Message Queue,简称 MQ)是一种应用程序之间的通信方法。 基本概念 消息队列是一种先进先出(FIFO)的数据结构,它允许一个或多个消费者从队列中读取消息,也允许一个或多个生产者…...
大数据学习(55)-BI工具数据分析的使用
&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博主哦ᾑ…...
原生android 打包.aar到uniapp使用
1.原生安卓里面引入uniapp官方提供的包文件: uniapp-v8-release.aar 2.提供uniapp调用的接口,新建类文件继承UniModule, package com.dermandar.panoramal;import com.scjt.lib.certlib;import io.dcloud.feature.uniapp.annotation.UniJSM…...
解锁MacOS开发:环境配置与应用开发全攻略
✨✨✨这里是小韩学长yyds的BLOG(喜欢作者的点个关注吧) ✨✨✨想要了解更多内容可以访问我的主页 小韩学长yyds-CSDN博客 目录 引言 一、MacOS 开发环境配置 (一)必备工具安装 (二)集成开发环境(IDE)选…...
Aruco 库详解:计算机视觉中的高效标记检测工具
1. 引言:Aruco 在计算机视觉中的重要性 在计算机视觉领域,标记(Marker)检测和识别是许多应用的基础,包括 机器人导航、增强现实(AR)、相机标定(Calibration)以及物体跟踪…...
第005文-模拟入侵网站实现0元购
1、部署导入靶场,部署购物网站 首先在虚拟机中新增一个centos虚拟机,在上面部署一套完整的购物网站,使用mysql数据库,访问端口是80。这个新增的centos虚拟机就是我们的靶场。购物网站在网上随便找一套开源的部署即可。 2、在网站…...
unity3d 背景是桌面3d数字人,前面是web的表单
是可以实现的,但涉及多个技术栈的结合,包括 Unity3D、Web 技术(HTML、JavaScript)、以及可能的 WebGL 或 WebRTC 技术。大致有以下几种实现方案: 方案 1:Unity 作为独立应用(桌面端࿰…...
23种设计模式简介
一、创建型(5种) 1.工厂方法 总店定义制作流程,分店各自实现特色披萨(北京店-烤鸭披萨,上海店-蟹粉披萨) 2.抽象工厂 套餐工厂(家庭装含大披萨薯条,情侣装含双拼披萨红酒&#…...
淘宝关键字搜索接口爬虫测试实战指南
在电商数据分析和市场研究中,通过关键字搜索获取淘宝商品信息是一项重要任务。淘宝开放平台提供了 item_search 接口,允许开发者通过关键字搜索商品,并获取商品列表及相关信息。本文将详细介绍如何设计并测试一个基于该接口的爬虫程序&#x…...
IntelliJ IDEA 中配置 Groovy
在 IntelliJ IDEA 中配置 Groovy 环境可以分为以下几个步骤 1. 安装 Groovy 插件 步骤: 打开 IntelliJ IDEA,进入菜单栏:File → Settings(Windows/Linux)或 IntelliJ IDEA → Preferences(Mac࿰…...
【Linux 22.4 ubuntu 安装cuda12.1 完整方案】
下载cuda12.1 官网网址 wget https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda_12.1.1_530.30.02_linux.run sudo sh cuda_12.1.1_530.30.02_linux.run!import! 如果已经安装驱动,则不要选择dirver那项 添加环境变量 vim ~/.b…...
使用AI整理知识点--WPF动画核心知识
一、WPF动画基础 1、动画本质 通过随时间改变依赖属性值实现视觉效果(如位置、透明度、颜色等)。 依赖属性必须支持 DependencyProperty,且需是可动画的(如 Double, Color, Point 等)。 2、动画三要素 起始值 (Fr…...
HTML前端手册
HTML前端手册 记录前端框架在使用过程中遇到的各种问题和解决方案,供后续快速进行手册翻阅使用 文章目录 HTML前端手册1-前端框架1-TypeScript框架2-CSS框架 2-前端Demo1-Html常用代码 2-知云接力3-Live2D平面动画 3-前端运维1-NPM版本管理 1-前端框架 1-TypeScrip…...
风控模型算法面试题集结
特征处理 1. 特征工程的一般步骤什么?什么是特征迭代 特征工程一般包含: 数据获取,分析数据的可用性(覆盖率,准确率,获取容易程度)数据探索,分析数据业务含义,对特征有一个大致了解,同时进行数据质量校验,包含缺失值、异常值和一致性等;特征处理,包含数据处理和…...
利用 requestrepo 工具验证 XML外部实体注入漏洞
1. 前言 在数字化浪潮席卷的当下,网络安全的重要性愈发凸显。应用程序在便捷生活与工作的同时,也可能暗藏安全风险。XXE(XML外部实体)漏洞作为其中的典型代表,攻击者一旦利用它,便能窃取敏感信息、掌控服务…...
引领变革!北京爱悦诗科技有限公司荣获“GAS消费电子科创奖-产品创新奖”!
在2025年“GAS消费电子科创奖”评选中,北京爱悦诗科技有限公司提交的“aigo爱国者GS06”,在技术创新性、设计创新性、工艺创新性、智能化创新性及原创性五大维度均获得评委的高度认可,荣获“产品创新奖”。 这一奖项不仅是对爱悦诗在消费电子…...

