簡體   English   中英

需要一種有效的方法來查找2D列表中的行數,該列表中的其中一個具有特定元素

[英]Need an efficient way to find number of rows in a 2D list which has specific element in one of its coulmns

說我有一個二維列表(數組),如下所示

[[1,'BUY',2015],
 [2,'SELL',2015],
 [3,'SELL',2015],
 [4,'BUY',2015],
 [5,'SELL',2015],
 ...
 ...
 ... n rows
 ]

現在,我需要一段代碼來查找上述2D列表中所有第二行的計數,該第二行的第二列被賦值為'BUY'。 我已經有執行此操作的代碼,如下所示。

cnt = 0
for row in list :
        if row[1] == 'BUY' :
            cnt = cnt + 1
print cnt

我需要一種更有效的方式來完成工作。 基本上,我正在尋找一個單行代碼來執行此操作。

您可以在生成器上使用sum()來添加是否存在相關字符串的布爾值:

cnt = sum('BUY' in item for item in lst)

另外,不要命名變量list否則將掩蓋內置函數list()

>>>l = [[1,'BUY',2015],
 [2,'SELL',2015],
 [3,'SELL',2015],
 [4,'BUY',2015],
 [5,'SELL',2015]]

>>> len([i for i in l if "BUY" in i])

這個如何:

count = len(filter(lambda x : x == 'BUY', list))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM