我有一個清單:
nums = [0, 1, 2, 3]
我想做的是回圈這個串列,然后更改串列。基本上,當我遍歷nums = [0, 1, 2, 3]nums 時,需要更改為:
nums = [current_element, 0, 1, 2]
nums = [0, current_element, 1, 2]
nums = [0, 1, current_element, 2]
nums = [0, 1, 2, current_element]
有沒有這樣改變的方法nums?我覺得有一個簡單的解決方案,但我已經被難住了幾個小時。
uj5u.com熱心網友回復:
您可以將一個map()物件傳遞給for回圈,該回圈會在每次迭代時生成您需要的串列。對于每個索引,我們使用串列切片生成一個新串列來替換該索引處的元素:
current_element = 42
nums = [0, 1, 2, 3]
for lst in map(lambda x: nums[:x] [current_element] nums[x 1:], range(len(nums))):
print(lst)
這輸出:
[42, 1, 2, 3]
[0, 42, 2, 3]
[0, 1, 42, 3]
[0, 1, 2, 42]
這種方法有兩個顯著的優點:
- 這不會改變原始串列。如果您出于任何原因需要訪問原始串列,您可以。
- 您無需擔心在每次迭代的開始/結束時重置值。如果您需要多次實作此模式,則無需記住每次都替換值。
uj5u.com熱心網友回復:
是的,有一個簡單的解決方案。
for i in range(len(nums)):
nums[i] = current_element
do_processing(nums)
nums[i] = i
當然,另一種方法就是制作串列的副本。
for i in range(len(nums)):
n1 = nums[:]
n1[i] = current_element
do_processing(n1)
uj5u.com熱心網友回復:
沒有花哨的函式,只有一個 for 回圈和一個臨時變數。
for i in range(len(nums)):
old_value = nums[i]
nums[i] = current_element
...
nums[i] = old_value
uj5u.com熱心網友回復:
nums.pop()
for i in range(len(nums) 1):
nums.insert(i,current_element)
print(nums)
nums.remove(current_element)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/469093.html
上一篇:在Java陣列中添加超過1個東西
