Разделение списка в Python - PullRequest
       2

Разделение списка в Python

0 голосов
/ 30 сентября 2018

Я пытаюсь сохранить случайный ассортимент чисел (в диапазоне 0, 100) в списке.Достигнуть сути - не проблема, однако, когда я пытаюсь отформатировать длинный список из 100 элементов, я сталкиваюсь с проблемой.Он должен быть отформатирован так, чтобы он представлял матрицу 10x10.

Вот мой код:

def random_elems_matrix():
    with open('input.txt', 'w') as outfile:
        # Pretty much just saying hey, I want some random numbers between 0 and 1000, and I want
        # 100 different numbers, and store them in an empty list so I can format it 
        new_range = []
        new_range = random.sample(range(0, 1000), 100)
        print (new_range, file = outfile)

random_elems_matrix()

В идеале, я бы хотел, чтобы он был представлен следующим образом:

[120, 622, 698, 367, 657, 929, 135, 423, 228, 941,

868, 893, 8, 840, 31, 678, 226, 599, 272, 133,

819, 662, 27, 195, 674, 2, 211, 550, 782, 165,

289, 770, 174, 827, 897, 296, 165, 38, 807, 701,

982, 706, 660, 795, 110, 799, 565, 745, 371, 77,

13, 201, 840, 961, 690, 345, 202, 79, 544, 196,

923, 386, 829, 799, 123, 45, 778, 880, 700, 302,

316, 302, 436, 145, 584, 533, 851, 542, 443, 619,

616, 692, 996, 634, 549, 105, 602, 938, 135, 468,

245, 443, 384, 987, 301, 364, 76, 599, 159, 908]

Но в настоящее время это просто список из 100 элементов.

ОБНОВЛЕННОЕ РЕШЕНИЕ:

import random
import numpy as np

# Function creates a random group of 10 elements to fit into the range 
from 0 to 1000
# Then repeats the process 10 times to create a 10x10 matrix from the 
lists.
class Matrix_Sorting():

    def random_elems_matrix():
        with open('input.txt', 'w') as outfile:
        # rows and columns to set up matrix size
        rows, cols = (10,10)
        # Since I don't know the input, I used a random method of 
generating numbers
        # to serve as the input for the 100 element matrix
        print(np.random.randfloat(1000, size=(rows, cols)), file = 
outfile)

random_elems_matrix()

Ответы [ 2 ]

0 голосов
/ 30 сентября 2018

Если вы генерируете список каждый раз случайным образом, но без каких-либо условий, прямой подход будет составлять список требуемой формы.Это можно сделать следующим образом:

new_range = random.sample(range(0, 1000), 100).reshape(10,10)

Если у вас есть список, который является результатом любой операции, которую вам нужно сделать 10x10, то выполните следующее

res_list=np.array(res_list).reshape(10,10)

0 голосов
/ 30 сентября 2018

Один из способов - преобразовать список в массив и изменить его следующим образом:

new_range=np.array(new_range).reshape(10,10)

Вывод:

array([[120, 622, 698, 367, 657, 929, 135, 423, 228, 941],
   [868, 893,   8, 840,  31, 678, 226, 599, 272, 133],
   [819, 662,  27, 195, 674,   2, 211, 550, 782, 165],
   [289, 770, 174, 827, 897, 296, 165,  38, 807, 701],
   [982, 706, 660, 795, 110, 799, 565, 745, 371,  77],
   [ 13, 201, 840, 961, 690, 345, 202,  79, 544, 196],
   [923, 386, 829, 799, 123,  45, 778, 880, 700, 302],
   [316, 302, 436, 145, 584, 533, 851, 542, 443, 619],
   [616, 692, 996, 634, 549, 105, 602, 938, 135, 468],
   [245, 443, 384, 987, 301, 364,  76, 599, 159, 908]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...