2015-10-20 2 views
2

У меня есть список the_list = [[3, 2, 0, 1, 4, 5], [4, 2, 1, 3, 0, 5], [0, 1, 2, 3, 4, 5]]. Как распечатать предыдущий элемент из любого случайно выбранного элемента в трех списках в the_list. Если случайно выбранный элемент имеет индекс 0, то предыдущим элементом был бы элемент в конце списка. Например, если я выбираю rande = 3 для списка, то я получаю следующий результат:Получение предыдущего элемента в списке списков

5 
1 
2 

Как закодировать это в то время как имеющие наиболее эффективную временную сложность?

+0

Лучшая временная сложность, очевидно, 'O (нм)', где 'n' является количество списков и 'm' - это длина списков. Какой код вы пробовали? –

+0

Что произойдет, если '3' (три) не входит ни в какой список? –

+1

«Два» списка в 'the_list'? – TigerhawkT3

ответ

4

Используйте метод list.index() и воспользоваться тем фактом, что индекс отрицательных чисел а list с конца:

>>> the_list = [[3, 2, 0, 1, 4, 5], [4, 2, 1, 3, 0, 5], [0, 1, 2, 3, 4, 5]] 
>>> rande = 3 
>>> for subl in the_list: 
...  print(subl[subl.index(rande)-1]) 
... 
5 
1 
2 
1
for 3 

l = [[3, 2, 0, 1, 4, 5], [4, 2, 1, 3, 0, 5], [0, 1, 2, 3, 4, 5]] 

>>> list(map(lambda x: x[(x.index(3) -1)],l)) 

[5, 1, 2] 
Смежные вопросы