对于范围(0,大小)中的i有什么作用:C[A[i]+;=我是说Python?
我不熟悉编程和算法,想知道:对于范围(0,大小)中的i有什么作用:C[A[i]+;=我是说Python?,python,python-3.x,algorithm,Python,Python 3.x,Algorithm,我不熟悉编程和算法,想知道: for i in range(0, size): C[A[i]] += 1 意味着。我知道范围是什么,但我不知道C[A[I]]是什么意思 如有必要,这是完整的代码 size = len(A) B = [0] * size C = [0] * (size+1) for i in range(0, size): C[A[i]] += 1 for i in range(1, (size+1)): C[i] += C[i - 1] i = size - 1
for i in range(0, size): C[A[i]] += 1
意味着。我知道范围是什么,但我不知道C[A[I]]是什么意思
如有必要,这是完整的代码
size = len(A)
B = [0] * size
C = [0] * (size+1)
for i in range(0, size): C[A[i]] += 1
for i in range(1, (size+1)): C[i] += C[i - 1]
i = size - 1
while i >= 0:
B[C[A[i]] - 1] = A[i] C[A[i]] -= 1
i -= 1
for i in range(0, size): A[i] = B[i]
return A
A = [4, 2, 2, 5, 3, 3, 1]
这就是缩进在python中如此重要的原因 这一行:
for i in range(0, size): C[A[i]] += 1
应写明:
for i in range(0, size):
C[A[i]] += 1
此外,除非使用单字母变量名(通常仅在数学方程和无意义/丢弃变量中才有代表性),否则我会使用更好/更具描述性的变量名
A本质上是迭代器形式的计数器。它从开始
到停止
(不包括停止
)按步长
递增计数(默认为1
)。作为迭代器,它的内存使用比列表要好,因为数据是动态计算的,而不是在列表中保存整数
因此,对于第一次迭代,i
为0;因此,命令:
C[A[i]] += 1
评估结果为:
C[A[0]] += 1
那么假设A[0]
是5
,那么它的计算结果是:
C[5] += 1
+=
是一个名为。它将结果添加并存储在该原始值中。因此,它将1
添加到当前C[5]
中的值,并将该值存储在那里
然后,for循环中的下一次迭代也会这样做,尽管
i
现在是1
,依此类推,直到范围耗尽或引发异常。这意味着与“C[i]+=1”几乎相同,只是使用了A[i]的值来代替i。欢迎使用。这不是一个讨论论坛或教程。请花点时间阅读和阅读该页面上的其他链接。如果您尝试运行代码,并在for
循环的每个步骤中打印A、C和i的值,您可能会发现所有操作都会变得清晰。