[英]why is rotating a list producing the identical values?
我正在切片列表:
nums = [1,2,3]
original_nums = nums
for i in range(0,len(nums)-1):
original_nums = original_nums[i:] + original_nums[:i]
print(original_nums)
我得到的 output 是:[1,2,3] 和 [2,3,1]。
兩個問題:
我不應該得到三個列表嗎?-因為我正在做“for i in range(0,2)”; 為什么我只得到兩個列表作為 output? 我不應該為 i=0、i=1 和 i=2 得到一個嗎?
如果我將其更改為 'for i in range(0,len(nums)); output 是 [1,2,3],[2,3,1],[1,2,3] - 我同意前兩個列表,但第三個不應該是 [3,2,1]? 因為我們每次都向左旋轉 1。
對於您的第一個問題: range
的第二個參數是排他性的。
對於您的第二個問題:它沒有達到您的預期,因為您在每個循環中都更改了original_nums
,如您在此處看到的:
nums = [1,2,3]
original_nums = nums
for i in range(0, len(nums)):
print("original_nums is", original_nums, ", so original_nums[i:] + original_nums[:i] will result in", original_nums[i:] + original_nums[:i])
original_nums = original_nums[i:] + original_nums[:i] # here you change original_nums, so next time this will be changed
print(original_nums)
印刷
original_nums is [1, 2, 3] , so original_nums[i:] + original_nums[:i] will result in [1, 2, 3]
[1, 2, 3]
original_nums is [1, 2, 3] , so original_nums[i:] + original_nums[:i] will result in [2, 3, 1]
[2, 3, 1]
original_nums is [2, 3, 1] , so original_nums[i:] + original_nums[:i] will result in [1, 2, 3]
[1, 2, 3]
正如您在第三個循環中看到的那樣,有一個“意外”數組[2, 3, 1]
用於旋轉,因此您得到了意想不到的結果。
如果您將其更改為以下內容:
nums = [1,2,3]
for i in range(0, len(nums)):
print(nums[i:] + nums[:i])
它永遠不會更改用於生成旋轉的數組並打印
[1, 2, 3]
[2, 3, 1]
[3, 1, 2]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.