webdevqa.jp.net

Pythonで任意のサイズの空の配列を取得するにはどうすればよいですか?

私は基本的に、Cでこれと同等のpythonが欲しいです:

int a[x];

しかし、pythonでは、次のような配列を宣言します。

a = []

問題は、次のような値を持つランダムなスロットを割り当てたいことです。

a[4] = 1

しかし、配列が空であるため、私はPythonでそれを行うことはできません。

91
user299648

「配列」によって実際にPythonリストを意味する場合、使用できます

a = [0] * 10

または

a = [None] * 10
186
Sven Marnach

Python(私があなたを正しく読んだ場合)であなたが望むことを正確に行うことはできません。リストの各要素(または、呼び出した配列)に値を入力する必要があります。

しかし、これを試してください:

a = [0 for x in range(N)]  # N = size of list you want
a[i] = 5  # as long as i < N, you're okay

他のタイプのリストについては、0以外の何かを使用してください。Noneも同様に良い選択です。

17
dappawit

Numpyを使用できます:

numpyをnpとしてインポートする

空の配列 の例:

np.empty([2, 2])
array([[ -9.74499359e+001,   6.69583040e-309],
       [  2.13182611e-314,   3.06959433e-309]])  
12

また、リストの拡張メソッドでそれを拡張できます。

a= []
a.extend([None]*10)
a.extend([None]*20)
5
Pythoni

リストを宣言し、各要素を追加するだけです。例:

a = []
a.append('first item')
a.append('second item')
2
Lyle

あなた(またはこの質問の他のサーチャー)が実際に整数で埋めるために連続した配列を作成することに興味があるなら、 bytearray および memoryivew を考慮してください:

# cast() is available starting Python 3.3
size = 10**6 
ints = memoryview(bytearray(size)).cast('i') 

ints.contiguous, ints.itemsize, ints.shape
# (True, 4, (250000,))

ints[0]
# 0

ints[0] = 16
ints[0]
# 16
1
Jay

実際にCスタイルの配列が必要な場合

import array
a = array.array('i', x * [0])
a[3] = 5
try:
   [5] = 'a'
except TypeError:
   print('integers only allowed')

Pythonにはn-initialized変数の概念がないことに注意してください。変数は値にバインドされる名前であるため、その値には何かが必要です。上記の例では、配列はゼロで初期化されます。

ただし、低レベルのものに実際に必要な場合を除き、これはPythonでは一般的ではありません。ほとんどの場合、他の答えが示唆するように、空のリストまたは空のnumpy配列を使用するほうが良いでしょう。

0
blue_note