Python 列表中下一个最近的特定项目(向前)并检查

Posted

技术标签:

【中文标题】Python 列表中下一个最近的特定项目(向前)并检查【英文标题】:Python next nearest specific item (onwards) in a list and check between 【发布时间】:2018-04-06 02:31:21 【问题描述】:
A=['a',1,2,3,'b',4,5,'a',6,7,'b']

如何在当前值和它之间找到下一个最近的特定值的索引和元素?

我想遍历列表 A,并能够找到下一个最接近的给定值的索引和介于两者之间的元素。比如说,具体的值是'b',如果我在第一个'a'的点,那么它将返回a的索引(0)第一个b的索引(4)和中间的元素(1, 2,3)。如果我在第二个a 的位置,那么它将返回 a 的索引 (7) 第一个 b 的索引 (10) 和中间的元素 (67)。

谢谢

【问题讨论】:

“特定值”是否总是一个字符?他们会永远是'a'和'b'吗?例如,你会拥有像['a', 'a', 1, 2, 'b', 3, 'b'] 这样的列表吗? 不必是'a'或'b',这是一个简化的例子,供读者理解。也可以是两个数字,例如3, 6 ,但由于我没有给出重复的数字,所以它不是那么典型。 【参考方案1】:
In [15]: result = []
    ...: start = 'a'
    ...: stop = 'b'
    ...: a = A
    ...: accum = 0
    ...: while True:
    ...:     try:
    ...:         i1 = a.index(start)
    ...:         i2 = a.index(stop)
    ...:         result.append((i1+accum, i2+accum, [a[i] for i in range(i1 + 1, i2)]))
    ...:     except ValueError:
    ...:         break
    ...:     accum += i2 + 1
    ...:     a = a[accum:]
    ...:
    ...: result
    ...:
Out[15]: [(0, 4, [1, 2, 3]), (7, 10, [6, 7])]

【讨论】:

我应该能找到第二个'b',索引只给出第一个'a'和'b'的索引。 呃,如果您阅读了您的问题,您只问了第一个问题。我引用你的话:“假设特定值是'b',如果我在第一个'a'点,那么它将返回a的索引(0)第一个b的索引(4)和中间的元素(1 ,2,3)。”别人怎么知道你在哪里? 如果你对一个问题有奇怪的限制,你应该问如何制作一个函数,当给定的某些输入返回某些输出时。对于你的问题,这不是很清楚,所以我根据你的声音即兴创作。 我最初是在说“如果”我是“a”,但为了更清楚,我已经修改了我的问题。 我是说遍历列表,我可以在任何时候。并且给定的点也不必是“b”。

以上是关于Python 列表中下一个最近的特定项目(向前)并检查的主要内容,如果未能解决你的问题,请参考以下文章

python - 在给定条件下查找列表中下一项的位置

“Java跌落向下,Python奋斗向前”,程序员:看哭了...

如果迭代器为空,Python迭代器中下一个元素的默认值?

从具有特定索引的 python 列表中挑选项目

从Python列表中的特定位置删除项目[重复]

python:在特定条件下从列表(序列)中获取项目数