我完全是新編程(少於2個月 - 自學),我正在研究一個項目,它需要一個列表的頻率列表中的每個內部列表的前兩個索引。優化頻率列表中的每個項目的兩個第一個值
這是我的列表:
X = [[ '塊',3],[ '街道',2],[ '燈',1],[ '街道',2], ['industrial',3],['park',2],['park',3],['industrial',3], ['block',3],['street',2], [ '燈',1],[ '街道',2],[ '工業', 3],[ '暫停',2]]
所以在每個內列表中的第一個值是一個TITLE第二個是傳統價值。
重要的是,你可以看到它們中的一些被重複(重複)。
我想列表的這樣的輸出列表:
P = [[ '塊',3,2],[ '街道',2,4],[ '燈' ,1,2],[ '工業', 3,3],[ '暫停',2,2],[ '暫停',3,1]]
與第三值作爲頻率內部列表中的外部列表x中。
所以這裏是我的非Python的(也許平淡)做法:
x = [['block', 3], ['street', 2], ['lamp',1], ['street', 2], ['industrial', 3], ['park', 2], ['park', 3], ['industrial', 3], ['block', 3], ['street', 2], ['lamp',1], ['street', 2], ['industrial', 3], ['park', 2]]
p = []
for a in x:
p.append(a), a.append(x.count(a))
print p # checkpoint
i= 0
while i < len(p):
for j in range(len(p)):
if i == j:
print i, ' = ', j
break
else:
if p[i][:2] == p[j][:2]:
print p[i][:2], '==', p[j][:2]
p.pop(i)
i = 0
j=0
break
i = i+1
print p # the list of lists I'm desired
,但我的項目,因爲這個功能,然後其他的功能,相較於他們這一項高運行時間,尤其是大量輸入數據集。
因爲我缺乏的知識我無法優化我寫的代碼。
所以我問有沒有更快捷,更pythonic的方式來做到這一點?
感謝您的回答。代碼是完美的。但是當我看到這個時,我不知道你是如何得到這個的。我怎樣才能提高自己的思維編碼能力,以更像你的方法進行編碼?這是必須通過時間來實現的嗎? –
@AshshinSalehi很多練習和看到類似的問題。 –