मेरे पास गैर-शून्य मूल्यों को संग्रहीत करने के लिए पायथन A[row,col,value]
में समन्वयित संग्रहण सूची है।आंतरिक सूची में पहले आइटम कुशलता से यथासंभव
मैं सभी पंक्ति अनुक्रमणिका की सूची कैसे प्राप्त कर सकता हूं? मुझे उम्मीद है कि A[0:][0]
print A[0:]
के रूप में काम करने के लिए पूरी सूची प्रिंट करता है लेकिन print A[0:][0]
केवल A[0]
प्रिंट करता है।
कारण मैं पूछ प्रत्येक पंक्ति यानीrange(0,n)
से अधिक पुनरावृत्ति जहां 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 का जवाब, this question और this post का उपयोग करते हुए मैं (निम्नलिखित के साथ आया संख्या लौटने के लिए सिंगलटन पंक्तियों का) जो कि बहुत तेज़ है मेरे मूल प्रयास से मेरी वर्तमान समस्या 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]
@larsman: मुझे लगता है एक ट्रिपल की एक सूची है। – Junuxx
हां, आपको मिल गया। –
क्या आप एक सरल, अक्षम, कामकाजी उदाहरण लिख सकते हैं जो आप करने की कोशिश कर रहे हैं? मुझे वास्तव में उलझन में सवाल का शब्द मिल रहा है, और आपका कोई उदाहरण कोड-ब्लॉक एक ही काम नहीं कर रहा है ..? – dbr