python – 内部列表中的第一个项目尽可能高效

我在python A [row,col,value]中有一个协调的存储列表,用于存储非零值.

如何获取所有行索引的列表?我期望这个A [0:] [0]作为打印A [0:]打印整个列表,但打印A [0:] [0]只打印A [0].

我要问的原因是有效计算每一行中的非零值的数量,即迭代范围(0,n),其中n是总的行数.这应该比我目前的范围(0,n)中的i便宜得多:对于A中的j:….

就像是:

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 questionthis 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]
这应该这样做:

c = [x[0] for x in A]

这是一个列表理解,它采用A的每个元素的第一个(子)元素.

https://stackoverflow.com/questions/13084619/first-items-in-inner-list-efficiently-as-possible

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:python – 内部列表中的第一个项目尽可能高效