1277871304 发表于 2021-1-17 23:54:35

请帮解释这个“len”是什么作用

nums =
target = 9

n = len(nums)
for i in range(n):
    for j in range(i+1, n):
      if nums + nums == target:
            print()
我记得len是查元素个数的啊,按我的意思n只是=4罢了,但是这是小甲鱼的课后作业答案,我没搞懂,请大神指点

jackz007 发表于 2021-1-18 01:06:31

本帖最后由 jackz007 于 2021-1-18 01:16 编辑

      n = len(nums)= 4 控制循环次数,索引列表元素
for i in range(n):
         这一句将使循环运行 4 次,i 的值将依次为 0、1、2、3。恰好可以索引到 nums 中的每个元素,你说它的作用重不重要?
nums =
target = 9

n = len(nums)                            # n = 4,列表 nums 中的元素数量
for i in range(n):                     # 从索引 0 开始,通过索引 i 向后遍历列表 nums 中的各个元素
    for j in range(i + 1 , n):         # 从索引 i + 1 开始,通过索引 j 向后遍历列表 nums 中的各个元素,这样,i 与 j 永远不会相等。
      if nums + nums == target:# 如果当前枚举到的 nums 两个元素之和与目标数相等
            print()                # 那就把它们打印出来
      这个代码存在缺陷,当 i = n - 1 = len(nums) - 1 的时候,j = i + 1 = len(nums) , 这时,nums 会下标越界的。
      必须把这一句改掉
for i in range(n):      
      改为
for i in range(n - 1):

z5560636 发表于 2021-1-18 09:03:38

你记忆的没错,
然后你带着解数学题的思路去把问题一个步骤一个步骤的想出来,在去看代码,就更好理解了。
如:一个数组中,任意两个数相加等于target,详细描述步骤并显示出来。
解:1.元素的第一个值和第二个值相加,是否等于target?
      2.元素的第一个值和第三个值相加,是否等于target?
然后在去看代码。

陈尚涵 发表于 2021-1-18 09:37:59

本帖最后由 陈尚涵 于 2021-1-18 09:40 编辑

len就是个获取对象长度的呀! 等于object.__length__(也只有这个方法的对象才能用len获取长度        )

qq1151985918 发表于 2021-1-18 09:42:24

len就是获取列表元素个数,你这个能看出来是4,但是如果下个列表是200呢?一个一个轻去数吗?而且列表有可能会在后期有添加元素或者移除元素的操作,如果是固定为某个值,将来在程序中重复执行(比如调用某一个函数)就会报错了,所以用len十分稳妥,更为准确。
页: [1]
查看完整版本: 请帮解释这个“len”是什么作用