首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在下面的代码中使用"i-=smallest“语句,我打算更改我的原始数组arr,但这并没有发生。我做什么好?

在下面的代码中使用"i-=smallest"语句,我打算更改我的原始数组arr,但这并没有发生。我做什么好?

首先,让我们来分析一下这段代码。根据描述,你想通过"i-=smallest"语句来更改原始数组arr。然而,你发现这个更改并没有生效。

可能的原因是,你在代码中使用了一个变量i来迭代数组arr,但是你没有给出完整的代码,所以无法确定smallest变量的来源和赋值过程。请确保smallest变量已经正确赋值。

另外,需要注意的是,"i-=smallest"语句只是对变量i进行减法运算,并不会直接修改原始数组arr中的元素。如果你想要修改原始数组arr,你需要在这个语句之后添加代码来更新数组的相应元素。

以下是一个示例代码,演示了如何使用"i-=smallest"语句来更改原始数组arr:

代码语言:txt
复制
arr = [5, 3, 8, 2, 1]
smallest = min(arr)  # 获取最小值

for i in range(len(arr)):
    if arr[i] == smallest:
        arr[i] -= smallest  # 修改数组元素

print(arr)  # 输出修改后的数组

在这个示例代码中,我们首先找到数组arr中的最小值,并将其赋值给变量smallest。然后,我们使用for循环遍历数组arr,如果当前元素等于最小值,我们就通过"i-=smallest"语句来修改数组元素。最后,我们输出修改后的数组arr。

希望这个示例代码能够帮助你解决问题。如果你有任何其他问题,请随时提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

文心一言 VS 讯飞星火 VS chatgpt (53)-- 算法导论6.2 5题

五、MAX-HEAPIFY代码效率较高,第 10 行递归调用可能例外,它可能使某些编译器产生低效代码。请用循环控制结构取代递归,重写 MAX-HEAPIFY代码。...函数,我们使用循环控制结构来代替递归调用。...该函数接收一个节点作为参数并返回该节点最大值。由于在 root.right.set_max_value 语句使用了这个最大值,因此该函数必须确保不会更改值。...在这里插入图片描述 chatglm: 很抱歉,无法提供 MAX-HEAPIFY 代码,因为不知道它是什么。但是,可以提供一个通用示例来说明如何用循环控制结构取代递归。...假设我们要计算一个数组两个数之和等于目标值下标。这个问题可以用递归方法解决,但也可以用循环方法解决。

21830

你可能需要14 个实用又简洁单行 JS 代码

单行代码是问题代码解决方案,使用特定编程语言中单个语句实现,无需任何第三方实用程序。 该定义包含许多其他定义没有的重要区别特征: 1)....获取数组最小元素 要获得数组最小项,我们可以采用这种使用 for 循环和 if 语句命令式方法。...此外,与第一种方法不同,它不会改变原始数组。 另一种函数式方法利用 Array sort() 方法实现方式来随机排列数组。...在下面的示例,我们根据姓名长度将人物对象分组到一个数组。...我们看到许多实例,其中包含多个语句命令式解决方案被转换为使用各种内置方法和语言结构声明式单行代码。 这些紧凑解决方案有时性能和可读性较低,使用它们可以证明您编程能力和对语言掌握程度。

1.7K30
  • const关键字秘密:为什么它不总是像你想象那样

    ']; // ⚠️⚠️⚠️⚠️ // 从上面的列表中选择其他选项 //查看它如何在代码翻译!...我们没有修改数据,我们修改是标签。我们将其从原始数组中分离出来,连接到一个新数组。 相比之下,使用 const 创建变量无法重新赋值: 这是 let 和 const 之间根本区别。...这里还有一个问题:像字符串和数字这样原始”数据类型是不可变。这使得事情变得更加混乱。我们将在下一节讨论。...我们已经将 age 变量分配给数字36,但我们可以将它指向列表任何其他数字: 要明确是,浏览器并没有所有可能数字大索引。希望在这里阐述重点是数字本身无法更改。...我们只能更改标签指向数字。 适用于所有原始值类型,包括字符串、布尔值、null等。 如上所述,在JavaScript原始值是不可变;它们不能被编辑。如果他们能做到呢?

    37820

    翻译连载 |《你不知道JS》姊妹篇 |《JavaScript 轻量级函数式编程》- 第 6 章:值不可变性

    下面这行代码会抛出错误,无可厚非: // 尝试改变 x,祝好运! x = 3; // 抛出错误! 再次重申,我们并不是要改变这个数据,而是要对变量 x 进行重新赋值。...写过很多,也阅读过很多 JavaScript 代码认为由于重新赋值导致大量 bug 这只是个想象问题,实际并不存在。 我们应该担心,并不是变量是否被重新赋值,而是值是否会发生改变。...因为值是可被携带词法赋值并不是。你可以向函数传入一个数组,这个数组可能会在你没意识到情况下被改变。但是你其他代码在预期之外重新给变量赋值,这是不可能发生。...这样取舍能接受吗?视情况而定。对代码性能优化和讨论都应该有个上下文。 如果在你程序,只会发生一次或几次单一状态变化,那么扔掉一个旧对象或旧数组完全没必要担心。...以数组这样一个特定数据结构来说,我们想要在每次操作这个数组时使每个更改都隐式地进行,就像结果是一个新数组一样,除了每次都真的创建一个数组之外,还有什么其他办法来完成这个任务呢?

    1.2K50

    JavaScript基础教程

    分号 JavaScript分号是可选省略(分号)可能会带来意想不到结果,所以我建议还是写上分号。 正如上面所看到,分号作为语句结尾,语句块不需要。...例如,在下面的代码,函数foo()永远不会被调用。 false && foo() true || foo() 此外,二元逻辑运算符会返回操作数一个,可能是一个布尔值,也可能不是。...为了开启严格模式,只需在JavaScript文件或script标签第一行添加如下语句: 'use strict'; 你也可以在每个函数上选择性开启严格模式,只需将上面的代码放在函数开头: function...因此,将上面的语句重写为: var x = 1; var y = 2; var z = 3; 由于提升(见下文),最好在函数顶部声明变量。...变量提升 变量声明会被提升:声明会被移到函数顶部,赋值过程不会。举个例子,在下面的函数(*)行位置声明了一个变量。

    2.6K20

    笨办法学 Java(三)

    但是,如果想知道某物从未被找到,您必须等到循环结束才能确定。 所以在这种情况下,使用了一种称为“标志”技术。标志是一个以一个值开始变量。如果发生了某事,该值将被更改。...奇怪,合法。 在第 31 到 38 行使用了类似的花招来再次在屏幕上显示所有的值。现在,显然比我在第 20 行做要糟糕。意思是,用了 8 行代码来做之前用一行代码事情。...因为你已经知道如何从文本文件读取数据,你可以自己修改它,让它从一个本地文件读取(一个与你代码在同一个文件夹文件,而不是在互联网上)。如果你懒得动手,在下面列出了一个备用版本。)...第 17 行将字符串"Miami"存储到记录 uno city 字段打算解释程序其余部分发生了什么,因为认为这是 非常清楚。...instead of Scanner inFile = new Scanner((new java.net.URL(url)).openStream()); 有时,如果打算使用一个类一次,宁愿在代码使用完整名称

    19510

    提高你 JavaScript 技能10 个面试题

    首先,array sort 方法对原始数组进行排序,并返回对该数组引用。意味着当你调用 arr2.sort() 时,arr2 数组对象将会被排序。 当你比较对象时,数组排序顺序并不重要。...如果我们觉得需要保护一个对象,避免其“从头到尾”发生改变,则可以递归地应用 Object.freeze 或使用现有的“深度冻结”库。 4. 原型继承 在下面的代码,有一个 Dog 构造函数。...当我们扩展该数组更改 0 索引对象上 firstname 属性时会发生什么?...所以在一个数组修改对象 firstName 属性,也将会在另一个数组更改。 9. 数组方法绑定 在以下情况下会输出什么?...10. set 唯一性和顺序 在下面的代码,我们用 set 对象和扩展语法创建了一个新数组,最后会输出什么?

    57610

    函数式编程,真香

    毫无夸张,也尽量在后面的文章给大家介绍一下 Rxjs,这个话题也在公司分享过。 什么是函数式编程? 简单来说,函数式编程是一种强调以函数使用为主软件开发风格。...循环是一种重要命令控制结构,很难重用,并且很难插入其他操作。而函数式编程旨在尽可能提高代码无状态性和不变性。...考虑一个简单数组排序代码: var sortDesc = function(arr) { return arr.sort(function(a, b) { return b -...,修改了原始引用,可以看到原始 arr 变成了 [1, 2, 3]。...总结 使用纯函数代码绝不会更改或破坏全局状态,有助于提高代码可测试性和可维护性 函数式编程采用声明式风格,易于推理,提高代码可读性。

    81720

    要深入 JavaScript,你需要掌握 36 个概念

    也觉得 JS 在某些情况处理方式与其它语言不太一样,并不能怪它,它也只是以自己方式展现给大家而已。 如果,你热爱一门编程语言,那么应该就会想深入了解并逐个掌握它概念。...); //[1, 2, 3, 10] 上面的示例可以看到,对arr2所做任何修改也将体现在arr1上。...) => accumulator + currentValue ) console.log(reduced) // 21 请注意,上述三种方法不会更改原始数组值。...如果你对变量进行更改,则可能会影响到其他函数,具体取决于变量被更改之前值。 在React环境,建议不要改变状态。 21. 闭包 闭包很难理解。 但是一旦理解,你会觉得 JS 其实也挺好。...数据结构 无论使用哪种编程语言,数据结构都是开发人员应具备基本知识之一。 糟糕程序员担心代码程序员担心数据结构和它们之间关系。 数据结构方面,你应该了解链表,队列,堆栈,树,图和哈希表。

    47110

    C语言中函数基本知识

    大家,又见面了,是你们朋友全栈君。 接着上次数组,这次我们来简单讲讲C语言里面的函数。...第一点: 函数再调用时候,发生是 值传递,也就是把值拷贝一份给形参,在形参里面改变其值并不影响实参值 形参 >: 在 exch() 函数试图改变...常量是不能被更改量。 2:如果你要在函数,要改变主调函数某变量值,那么就要把地址传递给形参, 如果不需要改变,直接传递值拷贝即可。...arr, int n); //跟一维数组一样,指针方式定义 sort(arr, 10); int sort(int arr[][4], int l, int r); //二维数组...因为把变量地址给传递进去了后,形参指针变量对地址进行操作,就会影响该内存空间值,进而反映到主调函数中去,也就是发生了改变。

    87620

    Java之父接受Evrone专访:您需要软件可靠性越高,静态类型语言帮助就越大

    因为它添加了一堆非常 Java 特性,另一方面,它也显示出弱点。部分在这个过程,因为这是一组应该只是内置功能。Java 社区驱动力已经变弱了并没有推动这些特性发展。...在 JDK 9 发生了变化,这是引入极少数破坏性更改之一,它破坏是:如果您正在使用一些所谓隐藏 API,封装机制会被打乱,而那些破坏的人封装边界和使用不应该使用东西以不应该使用方式使用,他们在从...对来说,协程问题之一,这就是很久没有使用它们原因,是它们实际上并没有让你这样做或让你利用多个处理器。你不能做真正并行。...如果您打算成为一名全面的软件开发人员,在其中构建某种大型、高性能系统,那么很难击败任何在 JVM 上运行语言。而且实际上并不关心您在 JVM 上使用哪种语言。...这只是一个循环中一个错误,恰好从数组末尾移出一个条目,直到数百万条指令之后您才会发现。而且真的,真的很讨厌追逐内存损坏错误。所以取决于你对什么感到舒服。

    58530

    C++缺陷与思考(上)

    分析和思考 之所以C数组会出现这种奇怪现象,猜测,作者考虑数组实际使用场景,是经常会进行切段截取,也就是说,一个数组类型并不总是完全整体使用,我们可能更多时候用是其中一段。...,就比较奇怪了: int arr[5]; // 定义一个int[5]类型变量arr arr明明是int[5]类型,但是这里int和[5]却并没有写到一起,如果这个还不算很容易造成迷惑的话,那来看看下面的...[5]; f(arr, 6); // 可能导致越界} 因为参数值和数组实际长度并没有要求强一致。...在原始C当中,其实并没有“布尔”类型,所有表示是非都是用int来做。...如果有这样需求,就是说buf1打算用了,想把它控制权交给ProcessBuf函数buf,相当于,主动让buf1提前“亡”,是否可以强制把它弄成将亡对象呢?

    1.6K50

    ArrayList分析1-循环、扩容、版本

    對於在原始數組和副本中都有效所有索引, // 這兩個數組將包含相同值。對於在副本中有效但在原始副本無效任何索引,副本將包含 null。...三.ArrayList版本管理 一开始大家会觉得这是个奇怪问题,ArrayList为啥会有版本,版本做什么用? 首先,详细解答第一个问题:ArrayList为什么有版本?...先简单讲讲上面三段代码,第一段代码很明显,我们使用迭代器时候首先调用就是集合类 iterator() 方法,而 iterator() 内部 只做了一件事儿:new Itr() ,现在知道迭代器是一个类对象...不知读者老爷有没恍然大悟,其实很简单啦: Itr对象不希望你在使用Itr迭代器过程修改(主要是增删)ArrayList(elementData)元素,不然在迭代时候源数组少了个元素会直接抛错...ArrayList源elementData数组对象,所以在ArrayList添加元素时这三个类内部方法均不知道数组元素个数已发生变化,所以在操作elementData时候均需要判读版本是否一致,这就是为啥有版本

    21720

    写了挺久代码,却还被异常支配?

    大家是小菜,一个渴望在互联网行业做到蔡不菜小菜。可柔可刚,点赞则柔,白嫖则刚!死鬼~看完记得给我来个三连哦! ?...相当于,父类方法好好,被你一继承居然出现了异常,而且还可能不知道,这不是背地里砸招牌吗! finally 使用 对于一些代码,我们希望无论 try 块异常是否抛出,它们都能够得到执行。...语句后执行,try return 并不是让函数马上返回结果,而是 return 语句执行后,将把返回结果放置进函数栈,此时函数并不是马上返回,它要执行 finally 语句后才真正开始返回。...finally是在tryreturn后面的表达式运算后执行(此时并没有返回运算后值,而是先把要返回值保存起来,管finally代码怎么样,返回值都不会改变,仍然是之前保存值),所以函数返回值是在...应该在下列情况下使用异常: 在恰当级别处理问题。

    56810

    彻底搞明白PHP引用概念

    彻底搞明白PHP引用概念 之前我们其实已经有过几篇文章讲过引用方面的问题,这次我们来全面的梳理一下引用在PHP到底是怎么回事,它和C指针有什么不同,在使用时候要注意些什么。 什么是引用?...$arr2直接=这个$arr1,没有使用引用,然后$arr2修改了$arr2[1]内容,$arr1相应内容也发生了改变,如果unset掉$t变量,则$arr1相应内容就不会发生改变。...对此,在文档中找到了下面的解释: 由于PHP内部工作特殊性,如果对数组单个元素进行引用,然后复制数组,无论是通过赋值还是通过函数调用值传递,都会将引用复制为数组一部分。...意味着对任一数组任何此类元素更改都将在另一个数组(和其他引用重复,即使数组具有不同作用域(例如,一个是函数内部参数,另一个是全局)!...关于PHP引用只要记住了它定义就非常理解了,最直观就是当成是操作系统快捷方式就好了,并没有我们想象那么难,和C指针相比真的只是娃娃级别,多多练习多多复习自然就能很好地掌握使用啦!

    62030

    盘一盘 Python 特别篇 23 - 爱因斯坦求和 einsum

    从标量可以猜想出以上规则,标量没有轴概念,而且求和与其本身也看不来区别,因此我们需要用向量、矩阵和张量来验证或完善上面的规则。 2.2 向量 1 维单数组 首先创建向量 arr1。...einsum("i->", arr1) 3 注意字符串 "i->" 可以看成 "i-> ",箭头左边字符 i 表示向量轴 0 维度, 箭头右边空字符表示求和得到标量。...以下面代码为例,当改变 c 元素,对应 arr2 也会改变。...那么第三种 'ij,jk->ij' 和第五种 'ij,jk->jk' 分别就是在三维数组上沿着 k 轴和 i 轴求和,对应着上面的三维数组图和下面的代码相信读者可以理解为什么结果是这样子了。...让我们用代码来明晰上面的文字解释。我们只关注上面数组 [0, 0] 位置 4400 是怎么计算出来

    2K20

    剑指offer-Go版实现 第五章:优化时间和空间效率

    输入一个整数 n ,求1~nn个整数十进制表示1出现次数。...,表示不懂,水平太差了,之所以分享出来是因为为了凑整 func countDigitOne(n int) (ans int) { // mulk 表示 10^k // 在下面的代码,...可以发现 k 并没有被直接使用到(都是使用 10^k) // 为了让代码看起来更加直观,这里保留了 k for k, mulk := 0, 1; n >= mulk; k++ {...在数组两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组逆序对总数。...,象征性贴了下代码自己也要多练习了,有时间还要review一下这些题,都是经典且难题,就算不为面试,实际业务上也有用得着地方。

    17710

    如何使用 JavaScript 将数组拆分为偶数块

    原始数组不会被改变。 注意:start和end都可以是负整数,仅表示它们是从数组末尾枚举。 -1是数组最后一个元素,-2是倒数第二个,依此类推......(arr, 3)); 运行结果: [[ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ], [ 10 ]] 在上面的代码,我们通过遍历数组并按每个chunkSize对其进行切片,...在每次迭代,我们执行拼接操作,并将每个块添加到结果数组,直到原始数组不再有其他元素为止(arr.length> 0)。 需要注意非常重要一点是splice()会更改原始数组。...如slice()创建原始数组副本,因此原始数组不会有任何更改。 总结 在本文中,我们介绍了在 JS 中将列表分割为多个块几种简单方法。...在此过程,我们学习了如何使用几个内置数组方法,如slice()和splice()。 ~完,是刷碗智,要去刷碗了,我们下期见!

    2.7K20

    PHP 面试踩过坑(二)「建议收藏」

    大家,又见面了,是全栈君。 11. 常见排序算法 1. 冒泡排序 思路分析:在要排序一组数,对当前还未排好序列,从前往后对相邻两个数依次进行比较和调整,让较大数往下沉,较小往上冒。...} } //返回最终结果 return $arr; } 3.插入排序 思路分析:在要排序一组数,假设前面的数已经是排好顺序,现在要把第n个数插到前面的有序数,使得n...$arr[$j] = $tmp; } else { //如果碰到不需要移动元素,由于是已经排序数组,则前面的就不需要再次比较了。...例如: 如果需要在早晨从家里出发去上班,可以有几个策略考虑:可以乘坐地铁,乘坐公交车,走路或其它途径。每个策略可以得到相同结果,但是使用了不同资源。...使用工厂模式好处是,如果你想要更改所实例化类名等,则只需更改该工厂方法内容即可,不需逐一寻找代码具体实例化地方(new处)修改了。为系统结构提供灵活动态扩展机制,减少了耦合。

    40720
    领券