Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 20, 2012 11:25:18

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

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

# -*- coding: utf-8 -*-
arr=[]
ar = 0
for i in range(4): arr.append([])
for j in range(4):
for i in range(4):
ar =ar+1
arr[j].append(ar)
print("arr =", end=" ")
for j in range(4):
for i in range(4):
if 1 >= arr[j][i] or arr[j][i] <= 9:
print(" ",arr[j][i], end=" ")
else:
print("", arr[j][i], end=" ")
if i==3:
print()
print(" ",end=" ")
print()
print("arr =",arr)
Как поменять в этом списке 16 с соседним элементом ?
Как в игре пятнашки

Офлайн

#2 Дек. 20, 2012 13:06:35

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

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

Попробуйте вот такой код

arr=zip(*[iter(range(1,17))]*4)
arr=map(list, arr)
arr[1][1],arr[2][3]=arr[2][3],arr[1][1]
print "arr =", arr



Офлайн

#3 Дек. 20, 2012 19:08:52

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

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

Сформулирую еще раз.
Как из списка arr вытащить элемент 16 ?
arr =
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

      
arr = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]

Офлайн

#4 Дек. 20, 2012 19:16:50

smoke853
Зарегистрирован: 2012-10-02
Сообщения: 123
Репутация: +  15  -
Профиль   Отправить e-mail  

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

cpv, вытащить вот так можно:

arr[3][-1]
#или так
arr[3][3]

Офлайн

#5 Дек. 21, 2012 04:47:14

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

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

Для списка arr2 я индексы вывожу так

arr2=[1,2,3]
print("arr2.index =",end=" ")
for i in range(1, 4):
print(arr2.index(i), end=" ")
print()
Как вывести индексы списка arr ?
arr = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 16], [13, 14, 15, 12]]

Офлайн

#6 Дек. 21, 2012 07:42:17

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

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

список не может знать своего контекста, поэтому индекс так получить невозможно. Массивы в numpy, кажется, умеют это. Можно создать свой класс двумерного списка. Можно просто проитерировать с индексированием

arr = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 16], [13, 14, 15, 12]]
for i,ls in enumerate(arr):
    for j,e in enumerate(ls): 
        print('{} -> <{} {}>'.format(e,i,j))

Офлайн

#7 Дек. 21, 2012 09:22:09

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

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

>>> arr = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 16], [13, 14, 15, 12]]
>>> print(*range(len(arr)))
0 1 2 3
>>> print(*range(len(arr[0])))
0 1 2 3
>>>



Офлайн

#8 Дек. 24, 2012 15:09:39

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

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

arr2=[1,2,3]
print('arr2=',arr2)
print('arr2[1] =',arr2[1])
print('arr2.index(2) =',arr2.index(2))

arr = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 16], [13, 14, 15, 12]]
print('arr =',arr)
print('arr[1][1] =', arr[1][1])
Как вывести из спиcка arr индекс одного элемента списка,
например элемента 6 ?

Офлайн

#9 Дек. 24, 2012 16:33:53

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

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

py.user.next
Строка

print(*range(len(arr))) 
для 3.Х?
Меня 2.7 отсылает к бабушке есть пирожки :)



Отредактировано 4kpt (Дек. 24, 2012 16:34:21)

Офлайн

#10 Дек. 24, 2012 17:18:43

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

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

cpv

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)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version