鱼C论坛

 找回密码
 立即注册
查看: 172|回复: 5

列表的课后作业

[复制链接]
发表于 2024-9-28 13:43:07 | 显示全部楼层 |阅读模式

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

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

x
>>> count = nums. count(1)
>>> length = len(nums )
>>> for each in range(length):
if nums[each] == 1:
     count -= 1

if count == 0:

print(each)

break
这个是列表(ⅲ)的课后作业的答案,里面length是列表的长度,并不是下标,所以想要获得下标应该是length-1。所以为什么if后面的是num[each]==1,而不是num[each-1]==1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-9-28 13:43:15 | 显示全部楼层
鱼油你好!

你提到的代码段存在一些问题,让我们一步步分析和修正。

1. `for`循环的`range`应该包括列表的长度。你已经正确使用`length`来计算列表长度。
2. `if`条件中的`nums`应该使用索引值来访问具体的元素。
3. 缩进不对,需要注意Python的代码块缩进。
4. 你的代码形式是想要找到数组中1的最后一个元素的位置。

修正代码如下:
nums = [1, 2, 3, 1, 4, 1]  # 示例列表
count = nums.count(1)  # 统计1的个数
length = len(nums)  # 获取列表长度

for each in range(length):
    if nums[each] == 1:  # 检查索引位置的值是否为1
        count -= 1

    if count == 0:  # 当count为0时,即最后一个1
        print(each)  # 输出索引
        break

解释:
1. `nums[each]`用于定位具体元素。
2. 当`count`减为0时,表示找到了最后一个1的下标,打印该下标并跳出循环。

希望这样解释对你有帮助!如果还有其他问题,随时提问哦!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-9-28 13:47:22 | 显示全部楼层
我想问的是为什么each不需要减一,因为下标不是从0开始的吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-9-28 13:47:35 | 显示全部楼层
15727646420 发表于 2024-09-28 13:47
我想问的是为什么each不需要减一,因为下标不是从0开 ...


鱼油你好!

在Python中,列表的下标确实是从0开始的。然而,你在循环中已经通过`for each in range(length)`访问了每一个下标值,所以`each`本身就是一个从0到`length-1`的索引值。举个例子:
nums = [0, 1, 2, 1, 3]  # 示例列表

count = nums.count(1)  # 统计1的个数
length = len(nums)  # 获取列表长度

for each in range(length):
    if nums[each] == 1:  # 检查索引each位置的值是否为1
        count -= 1

    if count == 0:  # 当count为0时,即最后一个1
        print(each)  # 输出索引
        break

解释:
1. `for each in range(length)`生成的`each`是从0到`length-1`的值,所以你不需要再减1。
2. `nums[each]`访问的是索引位置的具体元素。
3. 当找到最后一个1时,`count`为0,这时`each`就是你要输出的下标。

再举一个更清楚的例子:
nums = [10, 20, 30, 1, 50, 1, 70]
# 这个列表的下标从0到6
# 你想找最后一个1,也就是下标为5的元素
# 遍历的时候,分别是 nums[0], nums[1], ..., nums[6]

count = nums.count(1)
length = len(nums)

for each in range(length):
    if nums[each] == 1:
        count -= 1
    
    if count == 0:
        print(each)  # 打印5,就是你想要的最后一个1的位置
        break

这样你就能清楚为什么不需要再`each`减1了。希望对你有帮助!如果还有疑问,欢迎继续提问哦~

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-9-28 13:59:54 | 显示全部楼层
15727646420 发表于 2024-9-28 13:47
我想问的是为什么each不需要减一,因为下标不是从0开始的吗

for each in range(length) 就会让 each 从 0 到 length-1 遍历,不需要再减一了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-9-28 16:04:06 | 显示全部楼层
tommyyu 发表于 2024-9-28 13:59
for each in range(length) 就会让 each 从 0 到 length-1 遍历,不需要再减一了。

我才知道range ()如果没有选范围就是从0开始
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 16:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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