请帮解释这个“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: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): 你记忆的没错,
然后你带着解数学题的思路去把问题一个步骤一个步骤的想出来,在去看代码,就更好理解了。
如:一个数组中,任意两个数相加等于target,详细描述步骤并显示出来。
解:1.元素的第一个值和第二个值相加,是否等于target?
2.元素的第一个值和第三个值相加,是否等于target?
然后在去看代码。 本帖最后由 陈尚涵 于 2021-1-18 09:40 编辑
len就是个获取对象长度的呀! 等于object.__length__(也只有这个方法的对象才能用len获取长度 ) len就是获取列表元素个数,你这个能看出来是4,但是如果下个列表是200呢?一个一个轻去数吗?而且列表有可能会在后期有添加元素或者移除元素的操作,如果是固定为某个值,将来在程序中重复执行(比如调用某一个函数)就会报错了,所以用len十分稳妥,更为准确。
页:
[1]