簡體   English   中英

給數組中的元素賦值會更改其他變量

[英]Assigning value to element in array changes other variable

我一直在為計算競賽而學習,而在處理一個看似微不足道的問題時,我遇到了一些意外的行為。 我相信答案很簡單,但是對於我的一生,我無法弄清楚。

問題是: https : //dmoj.ca/problem/ccc14s1

這是我的程序:

import math

K = int(input())
m = int(input())
r_i = []

for i in range(m):
    r_i.append(int(input()))

friends = [x+1 for x in range(K)]
print(r_i)
for j in r_i:
    instances = int(math.floor(friends[-1] / j))
    for k in range(instances):
        friends[j*(k+1) - 1] = -1

for n in friends:
    if(n != -1):
        print(n)

問題在於,經過for j in r_i的循環一次后, instances計算結果為-1。 我發現刪除line friends[j*(k+1) - 1] = -1將解決問題,但我看不到為什么將值-1分配給friends的元素會影響instances的值在下一次迭代中。

從您提供的鏈接中獲取樣本輸入:

10
2
2
3

在第一個循環中:

for j in r_i:
    instances = int(math.floor(friends[-1] / j))
    for k in range(instances):
        friends[j*(k+1) - 1] = -1

您正在將friends設置為

[1, -1, 3, -1, 5, -1, 7, -1, 9, -1]
                                ^^

因此,在下一個循環中,當您嘗試結識friends[-1] ,您會得到上面指出的價值。 毫無疑問,它是-1

設置一次后,您應該清除所有-1秒:

for j in r_i:
    instances = int(math.floor(friends[-1] / j))
    for k in range(instances):
        friends[j*(k+1) - 1] = -1
    friends = [i for i in friends if i != -1]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM