Tôi có một danh sách lưu trữ được phối hợp trong python A[row,col,value]
để lưu trữ các giá trị không phải 0.Các mục đầu tiên trong danh sách bên trong hiệu quả nhất có thể
Làm cách nào để có danh sách tất cả các chỉ mục hàng? Tôi mong đợi điều này A[0:][0]
để làm việc như print A[0:]
in toàn bộ danh sách nhưng print A[0:][0]
chỉ in A[0]
.
Lý do tôi yêu cầu là tính toán hiệu quả số giá trị khác 0 trong mỗi hàng tức là lặp qua range(0,n)
trong đó n là tổng số hàng. Số tiền này phải nhiều hơn rẻ hơn so với cách hiện tại của tôi là for i in range(0,n): for j in A: ...
.
Cái gì như:
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
Over:
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
EDIT:
Sử dụng câu trả lời Junuxx của, this question và this post tôi đã đưa ra sau (đối với trả lại số hàng đơn) nhanh hơn nhiều kích thước vấn đề hiện tại của tôi là A
so với nỗ lực ban đầu của tôi. Tuy nhiên nó vẫn phát triển với số hàng và cột. Tôi tự hỏi liệu có thể không phải lặp lại trên A
nhưng chỉ tối đ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]
@larsman: Tôi giả sử A là một danh sách ba. – Junuxx
Có, bạn đã hiểu. –
Bạn có thể viết một ví dụ làm việc đơn giản, không hiệu quả về những gì bạn đang cố gắng làm không? Tôi tìm thấy những từ ngữ của câu hỏi thực sự khó hiểu, và không ai trong số các khối mã ví dụ của bạn dường như làm điều tương tự ..? – dbr