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

2025-03-18 08:54:00
admin
原创
102
摘要:问题描述:我正在遍历一个列表,并且想要打印出满足特定条件的项目的索引。我该怎么做?例子: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大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   3949  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   2735  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Freshdesk、ClickUp、nTask、Hubstaff、Plutio、Productive、Targa、Bonsai、Wrike。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在项目管理过程中面临着诸多痛点,如任务分配不...
项目管理系统   74  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Monday、TeamGantt、Filestage、Chanty、Visor、Smartsheet、Productive、Quire、Planview。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多项目经理和团队在管理复杂项目时,常...
开源项目管理工具   82  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Smartsheet、GanttPRO、Backlog、Visor、ResourceGuru、Productive、Xebrio、Hive、Quire。在当今快节奏的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在选择项目管理工具时常常面临困惑:...
项目管理系统   68  
热门文章
项目管理软件有哪些?
曾咪二维码

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

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

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用