2017-05-17 45 views
-1

我有字符串處理函數,它接受3個參數:值蟒列表的改變

  1. String1中,例如: 「A」
  2. String2的,例如: 「B」 的字符串
  3. Python列表

使用案例:迭代元組列表(String)以傳遞上面函數的前2個參數,並遍及整個迭代(包含字符串當前配置的Python列表不應該更改) 。

代碼:

stringList = ['A', 'B', 'C', 'D', 'E', 'F'] 
inputList = itertools.permutations(stringList, 2) 
list_that_should_not_change = deepcopy(stateConfig) 

#stackBlockforuser - string processing function 
for each in inputList: 
    postchangeList = stackBlockforuser(each[0],each[1], list_that_should_not_change) 

誤差是一次迭代之後,第三參數爲字符串功能改變到postchangeList(字符串處理功能的輸出)。任何建議沒有如何停止改變名單。

+0

除非你提供'stackBlockforuser'的代碼,我們不知道發生了什麼。 –

+1

@Prune整個代碼太大了。此外,我在這個特殊的問題中感到震驚,在這個問題中,我的python列表的值在迭代過程中發生了變化。因此,我在通過記錄器確認後給出了片段,這是造成問題的原因。我從一位紳士那裏得到了我正在尋找的確切解決方案。所以,如果你覺得你提供了一些東西,請評論或回覆帖子,或者請離開我的帖子。 –

回答

0

您的功能正在修改輸入列表,因此請繼續向其傳遞stateConfig的新副本。請記住,一個字符串是不變的,所以你也許並不需要一個深度複製:

for each in inputList: 
    postchangeList = stackBlockfouser(*each, stateConfig[:]) 

我也考慮使用你的循環變星擴張的自由。

1

至於有人提到,也許:

def stackBlockforuser(first, second, your_list): 
    new_list = your_list[:] # or list(your_list) 
    ...