Python:对列表进行排序

问题描述:

我有一个包含嵌套列表的列表。这些嵌套列表是句子。我想随机化句子的顺序,但random.shuffle()方法不支持嵌套列表。Python:对列表进行排序

[['A', 'B'],['C','D'],['E','F']] 

我只想重新排列句子(随机)而不是句子中的单词,我该如何做到这一点?

+3

这不是一个代码工厂 - 你能解释一下你试过的吗? – simchona 2012-01-10 08:24:53

+0

“,但random.shuffle()方法不支持嵌套列表。”它的确如此。是什么让你觉得它不? – Shawabawa 2012-01-10 12:30:02

shuffle对我来说工作正常。

>>>from random import shuffle 
>>>l=[['a','b'],['c','d'],['e','f']] 
>>>shuffle(l) 
>>>l 
[['c', 'd'], ['a', 'b'], ['e', 'f']] 
>>>shuffle(l) 
>>>l 
[['c', 'd'], ['e', 'f'], ['a', 'b']] 
+0

SRY,我描述了我的问题错误...这是被我试图做的事: 进口NLTK >>>从nltk.corpus导入棕色 >>> TG = brown.tagged_sents >>> TG =棕色.tagged_sents(simplify_tags = True) >>> random.shuffle(tg) – user1091534 2012-01-10 12:47:42

+0

我对这些模块并不熟悉。但是什么是'tg'?如果它是一个嵌套列表,那么不管之前的东西如何,它都应该正确地洗牌。 – 2012-01-10 13:12:32

这可以帮助你作为例如它不使用iters的洗牌递归

import random 
def deep_shuffle_iter(i): 
    try: 
     map(shuffle_iter, random.shuffle(i)) 
    except TypeError: pass 

例如

>>> asd = [[0,1],[2,3],[4]] 
>>> shuffle_iter(asd) 
>>> asd 
[[4], [2, 3], [0, 1]]