2013-08-04 44 views
2
def shufflemode(): 
    import random 
    combined = zip(question, answer) 
    random.shuffle(combined) 
    question[:], answer[:] = zip(*combined) 

但後來我得到的錯誤: 類型錯誤:類型「拉鍊」的對象沒有LEN()LEN錯誤的python荏苒

我該怎麼辦我好迷茫

+0

你導入一個名爲 「ZIP」 型,其覆蓋的buildin壓縮功能? –

+0

我導入的唯一東西是「隨機」 – user2636002

+0

你如何運行上面的代碼?你可以發佈你的所有代碼嗎? –

回答

1

我不知道一樣的東西。根據: randomizing two lists and maintaining order in python 你應該能夠像OP嘗試一樣做,但我也得到同樣的錯誤。我認爲從鏈接的人使用python 2而不是3,這可能是問題嗎?

+0

這在Python 2.7中適用於我,但現在我已經更改爲Python3,但是相同的代碼遇到錯誤。 Zip應該從python2更改爲3。 – armen

0

偶然發現,並且很驚訝地瞭解random.shuffle方法。所以,我想你的榜樣,它在Python 2.7.5爲我工作:

def shufflemode(): 
    import random 
    combined = zip(question, answer) 
    random.shuffle(combined) 
    question[:], answer[:] = zip(*combined) 

question = ["q1","q2","q3","q4","q5"] 
answer = ["a1","a2","a3","a4","a5"] 

if __name__ == "__main__": 
    shufflemode() 
    print question,answer 

結果是兩個清單的問題和答案相同的隨機序列* 強大的文本 *:

>>> 
['q3', 'q2', 'q5', 'q4', 'q1'] ['a3', 'a2', 'a5', 'a4', 'a1'] 
>>> 
0

這是Python 2和Python 3之間的問題。在zip工作後使用shuffle的Python 2中,因爲zip返回一個列表。在Python 3: 「類型錯誤:類型 '拉鍊' 的對象沒有LEN()」,因爲拉鍊在Python返回迭代3.

解,使用列表(),以轉換成一個列表:

combined = list(zip(question, answer)) 
random.shuffle(combined) 

隨shuffle()出現錯誤,因爲shuffle()使用len()。

參考問題: The zip() function in python 3