獲得python的list中含有重複值的index

2021-07-25 08:08:12 字數 1037 閱讀 2643

關於怎麼獲得,我想其實網上有很多答案。

list.index( )獲得值的索引值,但是如果list中含有的值一樣,例如含有兩個11,22,這樣每次獲得的都是第乙個值的位置。

那麼怎麼去解決這個問題呢?

下面的程式對這個問題做了一定的解答

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# @author : sundaycoder-俊勇

# @file : listlearn.py

# 怎麼獲得list中的相同值的索引值

# 請看下列程式

s = [11, 22, 33, 44, 22, 11]

print s.index(11)

# 此時輸出0

print s.index(22)

# 此時輸出1

# 那怎麼才能得到11,22相同的值的索引值呢?

# 有人說用dict(字典),這個方法也可以

# 有人說用defaultdict

# 程式如下:

from collections import defaultdict

d = defaultdict(list)

for k,va in [(v,i) for i,v in enumerate(s)]:

print d

# 輸出的結果如下:defaultdict(, )

# 但是有沒有乙個更加簡單的方法呢?

# 有的,那就是」偷梁換柱「,用乙個s1來複製s。

s1 = s

i = s1.index(11)

s1[i]=55

# 替換s1的11為55(不一定是55只要是列表中沒有的數值就可以)

# 再列印s1

print s1

# 輸出[55, 22, 33, 44, 22, 11]

# 下一步可以得到11的位置了

print s1.index(11)

# 輸出為:5

python中改變list中list值的問題

l s 0,0,0 for i in range 3 l 1 1 1 print l 如上 定義乙個空list,新增元素也為list型別。本意是想改變list l中乙個值,使其結果為 0,0,0 0,1,0 0,0,0 但執行的結構下圖所示,將list l中的所有元素都改變了。為找到原因,檢視pyt...

Python中的List推導

list推導 list prehension 看它的英文名就夠煩人的了,我總無法記清 prehension的正確拼寫 為了防止我將這一優秀的特性也忘記,還是將它通俗的描述一下吧。官方教程中說list推導是一種建立list的簡潔方法,通常是乙個表示式跟著是乙個 for 的語句,然後是零個或多個 for...

Python 中的 List 列表

任意物件的有序集合 列表可以包含任何種類的物件 列表都是可變的 列表是有序的 2 常用操作 列表長度 l1 1,2,3,4 print len l1 4 列表拼接 l2 l1 5,6 print l2 1,2,3,4,5,6 生成重複列表 print list 5 list list list li...