Форум сайта python.su
0
Как создать массив 50*50 целых чисел и заполнить тройками ?
Офлайн
0
lst = [3 for x in range(0, 51)] lst1 = [lst for x in range(0, 51)] print(lst1) # либо так, нагляднее: for i in lst1: print(i)
Отредактировано Yurka (Март 29, 2015 20:29:14)
Офлайн
14
Yurka
Ты список длинной 51 создаёшь.
И кстати если уж использовать генераторы списков, то делать это наверно надо так:
[[3 for j in range(50)] for i in range(50)]
Отредактировано alex925 (Март 29, 2015 21:20:40)
Офлайн
568
Господа, заполнять список числами и другими нессылочными типами можно так
[3] * 50
Офлайн
8
import numpy as np arr = np.zeros((50, 50), dtype=int) arr[:] = 3 print(arr)
Отредактировано Vigi (Март 30, 2015 07:42:15)
Офлайн
1
lst=[[3 for x in range(50)] for x in range(50)] for i in lst: print(i)
Офлайн
568
ReitrelНе факт!
Думаю это самый оптимальный вариант.
def test1(): lst = [[3 for x in range(50)] for x in range(50)] def test2(): lst = [[3 for x in xrange(50)] for x in xrange(50)] def test3(): lst = [[3] * 50 for _ in range(50)] def test4(): lst = [[3] * 50 for _ in xrange(50)] if __name__ == '__main__': import timeit print(timeit.timeit("test1()", setup="from __main__ import test1", number=100000)) print(timeit.timeit("test2()", setup="from __main__ import test2", number=100000)) print(timeit.timeit("test3()", setup="from __main__ import test3", number=100000)) print(timeit.timeit("test4()", setup="from __main__ import test4", number=100000))
15.5663039684 13.9283020496 2.48807406425 2.43950200081
Отредактировано FishHook (Март 31, 2015 20:14:49)
Офлайн
1
FishHookКласс! возьму на заметку способы тестирования! Спасибо!
Офлайн
1
FishHookПрокоментируй плиз эту строку:
if __name__ == '__main__':
Офлайн
253
Vigi
этоже питон подправил чуток
... arr = np.ones((50, 50), dtype=int)*3 ...
Офлайн