次のような構造を考えてみましょう -pythonでリストとして行列の上三角部分を表示するための効率的な方法
68 69 70 71 72 *
73 74 75 76 * 77
78 79 80 * 81 82
83 84 * 85 86 87
88 * 89 90 91 92
* 93 94 95 96 97
私は上半分のリストを生成する必要が
[68, 69, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80, 83, 84, 88]
すなわち構造だけです説明のために、上記の場合のように開始と長さの2つの値が与えられます。start=68
とlength = 5
です。ここで
は、リストを生成するために私のコードです -
start = 68
length = 5
ls = []
for i in range(length):
for j in range(length-i):
ls.append(start)
start = start+1
start = start+i
print(ls)
同じことを達成するためのより効率的な方法はありますか?
私のコードよりもはるかに高速です。私のユースケースではうまく動作しますが、99999のような大きな長さのメモリエラーが発生しています。どのように対処するのかは興味深いでしょう。 –
'length = 99999'の場合、50億の整数を含むリストを生成します。実際には、おそらくこのリストを実際に作成する必要はありません。代わりに、指定された 'start'と' length'の 'x'がセット内にあるかどうかを判断する関数を書くことができます。 – danyamachine
@ShivendraSinghこれはあまりにもこのコードのユースケースです。分散コンピューティングなどを考えてみましょう。 –