A[row,col,value]
ゼロ以外の値を格納するためのPythonの調整済みストレージリストがあり ます。
すべての行インデックスのリストを取得するにはどうすればよいですか?私はこれがリスト全体A[0:][0]
を印刷するように機能することを期待していましたが、印刷するだけです。print A[0:]
print A[0:][0]
A[0]
私が尋ねる理由は、各行のゼロ以外の値の数を効率的に計算するためです。つまり、nは行range(0,n)
の総数です。これは私の現在の方法よりもはるかに安いはずですfor i in range(0,n): for j in A: ...
。
何かのようなもの:
c = []
# for the total number of rows
for i in range(0,n):
# get number of rows with only one entry in coordinate storage list
if A[0:][0].count(i) == 1: c.append(i)
return c
以上:
c = []
# for the total number of rows
for i in range(0,n):
# get the index and initialize the count to 0
c.append([i,0])
# for every entry in coordinate storage list
for j in A:
# if row index (A[:][0]) is equal to current row i, increment count
if j[0] == i:
c[i][1]+=1
return c
編集:
Junuxxの回答、この質問、およびこの投稿を使用して、次のことを思いつきました(シングルトン行の数を返すため)。これは、現在の問題のサイズに対してA
、元の試みよりもはるかに高速です。ただし、それでも行と列の数に応じて大きくなります。A
繰り返す必要はなく、最大でできるのではないかと思いn
ます。
# get total list of row indexes from coordinate storage list
row_indexes = [i[0] for i in A]
# create dictionary {index:count}
c = Counter(row_indexes)
# return only value where count == 1
return [c[0] for c in c.items() if c[1] == 1]