2013-11-29 3 views
2

Извините, что я должен спросить, но я довольно долго оглядывался, не найдя ничего полезного.Python: Сортировка 2-мерного массива по длине массива?

В этом проблема; У меня есть список массивов:

list = [["I","Am"], ["An","Array", "Within", "An Array"]] 

Я хочу, чтобы отсортировать «список» по длине массивов, которые он содержит.

Софара Я пробовал:

list.sort() 

#and 
def nc(x): 
    return len(x) 

list.sort(key=nc) 

Но это как возвращение "None". Я бы по-настоящему оценил некоторую помощь в этом. Спасибо заранее!

+1

Вместо того, чтобы испачкать вопрос, как «[решено]», вы должны [принять ] (http://stackoverflow.com/help/someone-answers) ответ, который помог вам больше всего. – lvc

ответ

3

a_list.sort() результаты a_list для сортировки на месте (сама модификация) и возвращает None, так как он разработан.

sorted(a_list, key=len) вернет отсортированный список.

BTW Ваши входные данные уже отсортированы, каков был ожидаемый результат?

+0

Спасибо, Джокерстер! Я продолжал использовать print (list.sort() ... И я предположил, что он не работает, но на самом деле он сортируется от самого короткого до самого длинного массива. Возможно, мне нужен сон. – user2388026

2

Метод .sort() сортирует список на месте. Как и большинство методов, которые мутируют объект, он возвращает None, но если вы посмотрите на список, вы увидите, что он имеет. Если вы хотите сделать скопировать из списка, который отсортирован, то:

newlist = sorted(original_list, key=len) 

будет делать это. Обратите внимание, что ваша функция nc, хотя и правильная, более сложна, чем необходимо.

0

просто попробуйте это:

list = [["I","Am"], ["An","Array", "Within", "An Array"]] 
print(sorted(list, key = lambda ele : len(ele), reverse = True)) 
0
list_arrays = [["I","Am"], ["An","Array", "Within", "An Array"]] 
list_output = [] 
index = 0 
for i in list_arrays: 
    sorted_array = sorted(list_arrays[index]) 
    list_output.insert(index, sorted_array) 
    index = index + 1 
print list_output 

это даст вам выход для сортировки массива из массива

Смежные вопросы