鱼C论坛

 找回密码
 立即注册
查看: 1967|回复: 6

[已解决]这两个蛋是怎么实现交换的

[复制链接]
发表于 2023-4-30 16:45:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
书本P40
>>>egg【1】,egg【1】&egg【1】,egg【1】
>>>egg
【'鸡蛋','铁蛋','鹅蛋','鸭蛋’】
是怎么实现的,有人能解释一下吗
最佳答案
2023-4-30 19:24:33
843903652 发表于 2023-4-30 17:12
来回倒水我是理解的,但是我不太明白的是书本里头的适当地“偷懒”
>>>egg[1],egg[3]= egg[3],egg[1]
>>> ...

就是利用了元组来便捷地互换两个元素的值,原理就是元组的打包和解包过程,就是先把egg[1]和egg[3]打包成一个元组,然后又把这个元组解包,把其中的值分配给相对应数量的变量,这里就是把(egg[1],egg[3])#这里面的egg[1]和egg[3]就可以理解成两个常量值了#解包给egg[3]和egg[1],即egg[3] = egg[1]以及egg[1] = egg[3]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-30 16:47:26 | 显示全部楼层
本帖最后由 isdkz 于 2023-4-30 16:50 编辑

根据您所提供的信息,这个问题涉及到编程方面的知识,主要是关于数组和索引的使用。

首先,我们有一个名为“egg”的数组,包含四个元素:'鸡蛋','铁蛋','鹅蛋',和'鸭蛋'。数组中每个元素都有一个与之对应的索引值,从0开始计算。在这个例子中,'鸡蛋'的索引值是0,'铁蛋'是1,'鹅蛋'是2,'鸭蛋'是3。

书本P40中的代码:
>>>egg[1],egg[1]&egg[1],egg[1]

这段代码首先访问数组中索引为1的元素(即'铁蛋'),然后将其与自身进行按位与运算。按位与运算是一种二进制运算,用于比较两个数字的每一位,如果两个数字在同一位置上的位都是1,则结果在该位置上的位为1,否则为0。

在这个例子中,我们可以假设'铁蛋'对应的数字是'a'。那么代码执行的过程如下:
a & a = a

所以最后的结果是egg[1],即'铁蛋'。

然而,根据您的问题,您想要了解的是如何实现两个蛋之间的交换。为了实现两个蛋之间的交换,我们可以使用一个临时变量来存储其中一个蛋的值,然后将另一个蛋的值赋给第一个蛋,最后将临时变量的值赋给第二个蛋。以下是一个简单的示例:
# 假设我们想要交换'鸡蛋'和'铁蛋'的位置
temp = egg[0]  # 将'鸡蛋'的值存储在临时变量temp中
egg[0] = egg[1]  # 将'铁蛋'的值赋给egg[0]
egg[1] = temp  # 将临时变量temp中存储的'鸡蛋'的值赋给egg[1]

# 此时,egg数组变为:['铁蛋', '鸡蛋', '鹅蛋', '鸭蛋']

这就是如何实现两个蛋之间的交换。希望这可以帮助您解决问题!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-30 17:07:20 | 显示全部楼层
egg[0],egg[1]=egg[1],egg[0]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-30 17:12:39 | 显示全部楼层
来回倒水我是理解的,但是我不太明白的是书本里头的适当地“偷懒”
>>>egg[1],egg[3]= egg[3],egg[1]
>>>eggs
【'鸡蛋','铁蛋','鹅蛋','鸭蛋’】
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-30 19:24:33 | 显示全部楼层    本楼为最佳答案   
843903652 发表于 2023-4-30 17:12
来回倒水我是理解的,但是我不太明白的是书本里头的适当地“偷懒”
>>>egg[1],egg[3]= egg[3],egg[1]
>>> ...

就是利用了元组来便捷地互换两个元素的值,原理就是元组的打包和解包过程,就是先把egg[1]和egg[3]打包成一个元组,然后又把这个元组解包,把其中的值分配给相对应数量的变量,这里就是把(egg[1],egg[3])#这里面的egg[1]和egg[3]就可以理解成两个常量值了#解包给egg[3]和egg[1],即egg[3] = egg[1]以及egg[1] = egg[3]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-30 19:27:35 | 显示全部楼层
843903652 发表于 2023-4-30 17:12
来回倒水我是理解的,但是我不太明白的是书本里头的适当地“偷懒”
>>>egg[1],egg[3]= egg[3],egg[1]
>>> ...

要注意打包成一个元组之后里面就不能理解为变量了,要理解为常量,不然你理解egg[3] = egg[1]然后egg[1] = egg[3]就变成索引【1】和【3】都是一个值了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-30 20:01:29 | 显示全部楼层
yinda_peng 发表于 2023-4-30 19:24
就是利用了元组来便捷地互换两个元素的值,原理就是元组的打包和解包过程,就是先把egg[1]和egg[3]打包成 ...

懂了
就是之前的x,y=y,x

评分

参与人数 1荣誉 +2 收起 理由
yinda_peng + 2 对滴!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-28 18:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表