Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 25, 2012 01:33:05

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

Индексы многомерных списков

4kpt
для 3.Х?
Меня 2.7 отсылает к бабушке есть пирожки :)
ну да, у него изначально третий, потому что везде функция print(), а не оператор print

для второго есть костыль (если нет возможности перейти)
>>> from __future__ import print_function
>>> print(*'abc')
a b c
>>> 



Отредактировано py.user.next (Дек. 25, 2012 01:34:23)

Офлайн

#2 Дек. 25, 2012 08:56:41

cpv
Зарегистрирован: 2012-12-20
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Индексы многомерных списков

sergeek
def index(arr,required):
for i,ls in enumerate(arr):
for j,e in enumerate(ls):
if e == required:
return i,j

arr = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 16], [13, 14, 15, 12]]
print(index(arr,6))
(1, 1)
Я думал, что это можно проще сделать.
Ну, да ладно. Спасибо за ответ.

Отредактировано cpv (Дек. 25, 2012 08:58:16)

Офлайн

#3 Дек. 25, 2012 09:47:15

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

Индексы многомерных списков

py.user.next
для второго есть костыль (если нет возможности перейти)
>>> from __future__ import print_function
>>> print(*'abc')
a b c
>>>

или так:
>>> def myprint(*w):
...     for x in w:
...         print x,
...     print
...     
... myprint(*"avc")
a v c



Офлайн

#4 Дек. 25, 2012 14:14:07

sank
Зарегистрирован: 2012-10-05
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

Индексы многомерных списков

Проще так:

print(u'Позиция значения %s в координатах [%s, %s]' % filter(lambda v: v[0]==6, [(arr[k][n],k,n) for (n,j) in enumerate(i) for (k,i) in enumerate(arr)])[0])

v(0)==6 - это то значение, которое ищите
ну и обработку ошибок сделайте для несуществующих значений …

Отредактировано sank (Дек. 25, 2012 14:17:11)

Офлайн

#5 Дек. 25, 2012 17:55:30

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Индексы многомерных списков

sank
Проще так:
но оно же не работает

Офлайн

#6 Дек. 26, 2012 09:05:36

sank
Зарегистрирован: 2012-10-05
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

Индексы многомерных списков

sergeek
но оно же не работает
Хе! точно! Не работает. Я пока этот код рисовал у меня переменная задекларировалась и всё отработало чудно.
Вот досада … тогда получится только в 2 строки это сделать …
Вот так:
arr = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 16], [13, 14, 15, 12]]
k=0
print(u'Позиция значения %s в координатах [%s, %s]' % filter(lambda v: v[0]==6, [(arr[k][n],k,n) for (n,j) in enumerate(arr[k]) for (k,i) in enumerate(arr)])[0])

Офлайн

#7 Дек. 26, 2012 12:44:04

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Индексы многомерных списков

Вот ещё вариант:

print (lambda x:(x//4,x%4)) ((list(chain(*arr))).index(12))

ЗЫ: chain из itertools если что

Офлайн

#8 Дек. 27, 2012 03:43:25

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

Индексы многомерных списков

o7412369815963
Вот ещё вариант
так, наверно, более правильно
print(divmod((list(chain(*arr))).index(12), len(arr)))



Отредактировано pyuser (Дек. 27, 2012 03:44:44)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version