python列表中的值可以重复吗_获取python的list中含有重复值的index方法

关于怎么获得,我想其实网上有很多答案。

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)]:

d[k].append(va)

print d

# 输出的结果如下:defaultdict(, {33: [2], 11: [0, 5], 44: [3], 22: [1, 4]})

# 但是有没有一个更加简单的方法呢?

# 有的,那就是”偷梁换柱“,用一个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中含有重复值的index方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

本文标题: 获取python的list中含有重复值的index方法

本文地址: http://www.cppcns.com/jiaoben/python/231227.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值