第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何查找列表中所有唯一元素的所有索引

如何查找列表中所有唯一元素的所有索引

慕運(yùn)維8079593 2023-09-12 16:42:25
給出以下列表:list_ex = ['s1', 's2', 's1', 's4', 's2', 's3', 's1']如何找到所有不同元素的所有索引?例如,對(duì)于s1,這將是locations [0, 2, 6]。我認(rèn)為我可以通過在不同的元素上運(yùn)行循環(huán)來做到這一點(diǎn)list(set(list_ex)),然后執(zhí)行 anp.where來查找位置?
查看完整描述

3 回答

?
慕婉清6462132

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個(gè)贊

我發(fā)現(xiàn)這pandas似乎針對(duì)此類問題進(jìn)行了優(yōu)化。


import random

import pandas as pd

x = [f's{i}' for i in range(1000)]

l = [random.choice(x) for _ in range(2000000)]

output = pd.DataFrame(l).groupby([0]).indices

它可以比enumerate最佳場景(組的大小較大)快 3 倍,而在組的大小較小(每組 1 - 2 個(gè)項(xiàng)目)的情況下慢 3 倍。


查看完整回答
反對(duì) 回復(fù) 2023-09-12
?
四季花海

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超5個(gè)贊

您可以循環(huán)遍歷元素,構(gòu)建一個(gè)字典,將元素映射到該元素的索引列表。使用defaultdictof 類型list對(duì)此很方便,因?yàn)榈谝淮巫x取新元素時(shí)會(huì)自動(dòng)獲得一個(gè)空列表。


from collections import defaultdict


list_ex = ['s1', 's2', 's1', 's4', 's2', 's3', 's1']


indices = defaultdict(list)


for i, v in enumerate(list_ex):

  indices[v].append(i)


print(indices)

這將打印以下內(nèi)容:


defaultdict(<class 'list'>, {'s1': [0, 2, 6], 's2': [1, 4], 's4': [3], 's3': [5]})


查看完整回答
反對(duì) 回復(fù) 2023-09-12
?
慕哥6287543

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊

這是使用列表理解的簡短解決方案:


locations = [el[0] for el in enumerate(list_ex) if el[1] == "s1"]

解釋


枚舉創(chuàng)建位置/元素對(duì)的列表,它看起來像這樣:


[(0, 's1'), (1, 's2'), (2, 's1'), (3, 's4'), (4, 's2'), (5, 's3'), (6, 's1')]

下面的代碼得到相同的結(jié)果,只是以 for 循環(huán)形式顯示:


target = 's1'

locations = []


for el in enumerate(list_ex):

    if el[1] == target:

        locations.append(el[0])


查看完整回答
反對(duì) 回復(fù) 2023-09-12
  • 3 回答
  • 0 關(guān)注
  • 158 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)