如何获取列表中项目的位置?

2025-03-18 08:54:00
admin
原创
55
摘要:问题描述:我正在遍历一个列表,并且想要打印出满足特定条件的项目的索引。我该怎么做?例子:testlist = [1,2,3,5,3,1,2,1,6] for item in testlist: if item == 1: print position 解决方案 1:嗯。这里原本有一个带...

问题描述:

我正在遍历一个列表,并且想要打印出满足特定条件的项目的索引。我该怎么做?

例子:

testlist = [1,2,3,5,3,1,2,1,6]
for item in testlist:
    if item == 1:
        print position

解决方案 1:

嗯。这里原本有一个带有列表推导的答案,但它消失了。

这里:

 [i for i,x in enumerate(testlist) if x == 1]

例子:

>>> testlist
[1, 2, 3, 5, 3, 1, 2, 1, 6]
>>> [i for i,x in enumerate(testlist) if x == 1]
[0, 5, 7]

更新:

好的,你想要一个生成器表达式,我们就有一个生成器表达式。下面是列表推导式,在 for 循环中:

>>> for i in [i for i,x in enumerate(testlist) if x == 1]:
...     print i
... 
0
5
7

现在我们将构建一个发电机...

>>> (i for i,x in enumerate(testlist) if x == 1)
<generator object at 0x6b508>
>>> for i in (i for i,x in enumerate(testlist) if x == 1):
...     print i
... 
0
5
7

并且非常巧妙的是,我们可以将其分配给一个变量,然后从那里使用它......

>>> gen = (i for i,x in enumerate(testlist) if x == 1)
>>> for i in gen: print i
... 
0
5
7

想想我曾经写过 FORTRAN。

解决方案 2:

那么下面呢?

print(testlist.index(element))

如果你不确定要查找的元素是否确实在列表中,你可以添加初步检查,例如

if element in testlist:
    print(testlist.index(element))

或者

print(testlist.index(element) if element in testlist else None)

或者“pythonic 方式”,这种方式可读性稍差,但效率更高

try:
    print(testlist.index(element))
except ValueError:
    pass

解决方案 3:

使用枚举:

testlist = [1,2,3,5,3,1,2,1,6]
for position, item in enumerate(testlist):
    if item == 1:
        print position

解决方案 4:

for i in xrange(len(testlist)):
  if testlist[i] == 1:
    print i

按照要求使用 xrange 而不是 range (参见注释)。

解决方案 5:

下面是另一种方法:

try:
   id = testlist.index('1')
   print testlist[id]
except ValueError:
   print "Not Found"

解决方案 6:

请尝试以下操作:

testlist = [1,2,3,5,3,1,2,1,6]    
position=0
for i in testlist:
   if i == 1:
      print(position)
   position=position+1

解决方案 7:

[x for x in range(len(testlist)) if testlist[x]==1]

解决方案 8:

如果您的列表足够大,并且您只希望在稀疏数量的索引中找到值,请考虑此代码可以执行得更快,因为您不必迭代列表中的每个值。

lookingFor = 1
i = 0
index = 0
try:
  while i < len(testlist):
    index = testlist.index(lookingFor,i)
    i = index + 1
    print index
except ValueError: #testlist.index() cannot find lookingFor
  pass

如果您希望找到很多值,您可能应该只将“索引”附加到列表并在末尾打印列表以节省每次迭代的时间。

解决方案 9:

我认为使用 Tkinter 库中的 curselection() 方法可能会很有用:

from Tkinter import * 
listbox.curselection()

此方法适用于 Tkinter 列表框小部件,因此您需要构建其中一个而不是列表。

这将返回如下位置:

('0',)(尽管 Tkinter 的后续版本可能会返回整数列表)

这是第一个位置,并且数字将根据项目位置而变化。

有关更多信息,请参阅此页面:
http://effbot.org/tkinterbook/listbox.htm

问候。

解决方案 10:

为什么要让事情复杂化?

testlist = [1,2,3,5,3,1,2,1,6]
for position, item in enumerate(testlist):
    if item == 1:
        print position

解决方案 11:

l = list(map(int,input().split(",")))
num = int(input())
for i in range(len(l)):
    if l[i] == num:
        print(i)

解释:

在第 1 行中获取一个整数“l”(以逗号分隔)的列表。在第 2 行中获取一个整数“num”。在第 3 行中使用 for 循环遍历列表内部并检查列表内的数字是否满足给定的数字(num),然后它将打印列表内数字的索引。

解决方案 12:

仅说明完整的示例以及input_list其中具有searies1(示例:input_list [0])的示例,其中您想要查找series2(示例:input_list [1])并获取 series2 的索引(如果它存在于 series1 中)。

注意:certain condition如果条件简单,则可以使用 lambda 表达式

input_list = [[1,2,3,4,5,6,7],[1,3,7]]
series1 = input_list[0]
series2 = input_list[1]
idx_list = list(map(lambda item: series1.index(item) if item in series1 else None, series2))
print(idx_list)

输出:

[0, 2, 6]

解决方案 13:

testlist = [1,2,3,5,3,1,2,1,6]
num = 1
for item in range(len(testlist)):
    if testlist[item] == num:
        print(item) 

解决方案 14:

那尝试一下

list_ = ["pen", "david"]
for i in list_:
    list_.index(i)

代码逐字逐句地获取每个对象并解析i

此外,如果您想检查特定元素,您可以尝试:

list_ = ["pen", "david"]
for i in list_:
    if list_.index(i) == 0:
        print(i, list_.index(i))

解决方案 15:

testlist = [1,2,3,5,3,1,2,1,6]
for id, value in enumerate(testlist):
    if id == 1:
        print testlist[id]

我猜这正是你想要的。;-)“id”将始终是列表上值的索引。

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2482  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1533  
  PLM(产品生命周期管理)项目对于企业优化产品研发流程、提升产品质量以及增强市场竞争力具有至关重要的意义。然而,在项目推进过程中,范围蔓延是一个常见且棘手的问题,它可能导致项目进度延迟、成本超支以及质量下降等一系列不良后果。因此,有效避免PLM项目范围蔓延成为项目成功的关键因素之一。以下将详细阐述三大管控策略,助力企业...
plm系统   0  
  PLM(产品生命周期管理)项目管理在企业产品研发与管理过程中扮演着至关重要的角色。随着市场竞争的加剧和产品复杂度的提升,PLM项目面临着诸多风险。准确量化风险优先级并采取有效措施应对,是确保项目成功的关键。五维评估矩阵作为一种有效的风险评估工具,能帮助项目管理者全面、系统地评估风险,为决策提供有力支持。五维评估矩阵概述...
免费plm软件   0  
  引言PLM(产品生命周期管理)开发流程对于企业产品的全生命周期管控至关重要。它涵盖了从产品概念设计到退役的各个阶段,直接影响着产品质量、开发周期以及企业的市场竞争力。在当今快速发展的科技环境下,客户对产品质量的要求日益提高,市场竞争也愈发激烈,这就使得优化PLM开发流程成为企业的必然选择。缺陷管理工具和六西格玛方法作为...
plm产品全生命周期管理   0  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用