Создание двухмерного списка / матрицы с разным количеством столбцов для каждой строки - PullRequest
0 голосов
/ 29 июня 2018

Я хотел бы составить список или матрицу с известным числом строк (3), но для каждой строки количество элементов будет разным. Так это может выглядеть примерно так:

[[4, 6, 8],
[1, 2, 3, 4],
[0, 2, 3, 4, 8]]

Каждая строка будет иметь известный максимум элементов (8).

До сих пор я пробовал следующее:

Sets1=np.zeros((3,8))

for j in range(3):
Sets1[0,:]=[i for i, x in enumerate(K[:-1]) if B[x,j]==1 or B[x+1,j]==1]

Я хочу это, потому что я хочу иметь список для каждого j в диапазоне (3), по которому я могу сделать цикл for и добавить ограничения в мой ILP.

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 29 июня 2018

Вот пример того, как должен выглядеть ваш код:

from random import *

myMatrix = [
    [],
    [],
    []
]

elementsNums = [1, 2, 3, 4, 5, 6, 7, 8] # possible length of each list in the matrix
elements = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # random values in each list in the matrix


def addElements(Num, List, Matrix):
    count = 0

    a = choice(Num) #length of first list in matrix
    Num.remove(a) # removing to prevent same length lists in matrix

    b = choice(Num) # length of second list in matrix
    Num.remove(b)

    c = choice(Num) # length of third list in matrix

    nums = [a, b, c]

    for x in nums: # iterating through each list (a, b, c)
        for i in range(x): # placing x number of values in each list
            Matrix[count].append(choice(List)) # adding the values to the list
        count += 1 # moving to the next list in the matrix


addElements(elementsNums, elements, myMatrix)
print(myMatrix)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...