对于范围(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的值,您可能会发现所有操作都会变得清晰。