Найти - Пользователи
Полная версия: Двумерный массив (список), итерация по столбцам[row]
Начало » Центр помощи » Двумерный массив (список), итерация по столбцам[row]
1
theproshin
Я в замешательстве. Может кто-нибудь сталкивался с задачей:
есть двумерный массив
[[1][a]
 [2][b]
 [3][c]
 [4][d]]
Необходимо получитьт список типа:
[1,2,3,4],
[1,2,3,d],
[1,2,c,4],
[1,2,c,d],
[1,b,3,4],
[1,b,3,d],
[1,b,c,4],
[1,b,c,d],
...
Никто не узнает знакомый алгоритм?
FishHook
theproshin
Необходимо получитьт список типа:
По какому принципу строится второй список?
Shaman
Счетчик - маска?
terabayt
a = [1,'a',
     2,'b',
     3,'c',
     4,'d']
b = []
for i in xrange(16):
	b.append([])
	for i, j in enumerate("%04d"%int(bin(x)[2:])) + bin(i)[2:]):
		b[-1].append(a[i*2+int(j)])
print b
terabayt
или так
a = [1,'a', 2,'b', 3,'c', 4,'d']
b = [[a[int(i*2+int(j))] for i, j in enumerate('0'*(4-len(bin(x)[2:])) + bin(x)[2:])] for x in xrange(16)]
print b
Shaman
Мой вчерашний вариант
data = [['1', 'a'],
        ['2', 'b'],
        ['3', 'c'],
        ['4', 'd']]
def mkmask(n, w):
    return map(int, bin(n)[2:].zfill(w))
def domagic(data):
    w = len(data)
    for c in range(1 << w):
        m = mkmask(c, w)
        yield [p[m[i]] for i, p in enumerate(data)]
print(list(domagic(data)))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB