Sıfır değerleri depolamak için python A[row,col,value]
'da koordineli bir depolama listemiz var.İç sayfadaki ilk öğeler mümkün olduğunca verimli
Tüm satır dizinlerinin listesini nasıl alabilirim? Bu A[0:][0]
, print A[0:]
tüm listeyi yazdırmayı bekledim ancak print A[0:][0]
yalnızca A[0]
yazdırır.
sormak nedeni, n satır sayısı olduğu range(0,n)
yineleme her satır yani içindeki sıfır olmayan değerlerin sayısını etkili bir şekilde hesaplanması içindir. Bu ucuz for i in range(0,n): for j in A: ...
geçerli yolumdan daha fazla olmalıdır.
şey gibi:
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
Üzeri:
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
DÜZENLEME: numarayı döndürmek için (aşağıdaki ile geldi
Junuxx yanıtını, this question ve this post kullanma için daha hızlı olan tek satırlı satırların Benim şu anki sorunum, A
orijinal denememden daha büyük. Ancak hala satır ve sütun sayısı ile büyür. A
üzerinden yinelemek zorunda olmasa da sadece n
'a kadar mı acaba?
# 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: Ne üçe bir liste olduğunu varsayalım. – Junuxx
Evet, anladın. –
Yapmaya çalıştığınız şeyin basit, verimsiz bir örneğini yazabilir misiniz? Sorunun metnini gerçekten kafa karıştırıcı buluyorum ve örnek kod bloklarınızın hiçbiri aynı şeyi yapmıyor gibi görünüyor ..? – dbr