web-dev-qa-db-ja.com

配列全体を消去Python

アレイ全体を消去して、アイテムを残さないようにするにはどうすればよいですか?

これを実行して、新しい値(100個のfloatの新しいセット)を保存し、最小値を見つけられるようにします。

今、私のプログラムは、前のセットをまだそこに追加しているため、考える前にセットから最小値を読み取っています。ちなみに.appendを使用しています。

38
pjehyun

listarray は異なるクラスであることに注意してください。できるよ:

del mylist[:]

これにより、実際に既存のリストが変更されます。デビッドの答えは、新しいリストを作成し、それを同じ変数に割り当てます。どちらを使用するかは状況によって異なります(たとえば、他の変数に同じリストへの参照がありますか?)。

試してください:

a = [1,2]
b = a
a = []

そして

a = [1,2]
b = a
del a[:]

abを毎回印刷して、違いを確認します。

48

簡単だ:

array = []

arrayを空のリストに設定します。 (それらはPythonでは、配列ではなくリストと呼ばれます)

それでも問題が解決しない場合は、質問を編集して、問題を示すコードサンプルを含めます。

28
David Z

はい、配列は存在します。delappendのようなものになると、リストと違いはありません。

>>> from array import array
>>> foo = array('i', range(5))
>>> foo
array('i', [0, 1, 2, 3, 4])
>>> del foo[:]
>>> foo
array('i')
>>> foo.append(42)
>>> foo
array('i', [42])
>>>

注目に値する違い:配列を作成するときにタイプを指定する必要があり、arr[i] = expressionまたはarr.append(expression)を実行するときにCタイプとPythonタイプ間の変換に余分な時間を費やしてストレージを節約します。およびlvalue = arr[i]

5
John Machin

「どこかで100個のフロートを取得しています。最小値を見つける前に配列またはリストに配置する必要がありますか?」などの質問に答えるために、

回答:いいえ、somewhereが反復可能であれば、これを行う代わりに:

temp = []
for x in somewhere:
   temp.append(x)
answer = min(temp)

あなたはこれを行うことができます:

answer = min(somewhere)

例:

answer = min(float(line) for line in open('floats.txt'))
1
John Machin