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 列表中下一个最近的特定项目(向前)并检查的主要内容,如果未能解决你的问题,请参考以下文章