[英]Python range is printed twice
我目前正在開發一個項目(在 Python 2.7 中),當range()
的for
值被打印兩次時遇到了問題。 我最小化了很多我正在談論的部分,所以如果只是假設我的代碼中還有其他部分。
所以,基本上,我有一個 5 x 5 的板,根據case1
和case2
,我正在使用list()
復制板並對其進行更改。 然后,我想要一列數字說明行號,這樣 output 將類似於:
1 O O O O O
2 O O O O O
3 O O O O O
4 O O O O O
5 O O O O O
對於case1
和case2
。
我有:
board = []
# Creating board
for i in range(5):
board.append(["O"] * 5)
case1 = True
case2 = True
if case1 == True:
board1 = list(board) #Making duplicate of board
# I took out a lot of the code making alterations to board1
for i in range(5):
board1[i].insert(0, str(i + 1) + " ")
if case2 == True:
board2 = list(board) #Making duplicate of board
# I took out a lot of the code making alterations to board2
for i in range(5):
board2[i].insert(0, str(i + 1) + " ")
#Printing the boards
for i in range(5):
print " ".join(board1[i])
print "\n\n" #Just a gap
for i in range(5):
print " ".join(board2[i])
但是,output 是:
1 1 O O O O O
2 2 O O O O O
3 3 O O O O O
4 4 O O O O O
5 5 O O O O O
對於每個board1
和board2
。 當我取出有關case2
的所有內容時,我得到了預期的結果,但是,使用我當前的代碼,它正在打印兩次打印行的 range() 。
我想知道是否有辦法解決這個問題。
對不起,如果我的措辭很不清楚。 如果有人為了更清楚而編輯問題/標題,我將不勝感激。
正如@Random Davis 指出的那樣,問題出在您復制列表列表以創建 board1 和 board2 的事實。
board1=list(board)
board2=list(board)
這樣,當您將值 1-5 插入到 board1 時,它們也會插入到 board2 中,因為它們仍然是對 board 的引用,因此當您在 board2 中插入值時,它們會被第二次插入。
為避免這種情況,您必須創建 board1、board2,如下所示:
board1=[list(i) for i in board]
board2=[list(i) for i in board]
一切都會正常工作
在這里檢查為什么對 board1 的更改會反映到 board2:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.