【问题标题】:Python next nearest specific item (onwards) in a list and check betweenPython 列表中下一个最近的特定项目(向前)并检查
【发布时间】: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 ,但由于我没有给出重复的数字,所以它不是那么典型。

标签: python list loops next nearest-neighbor


【解决方案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”。
猜你喜欢
  • 1970-01-01
  • 2014-07-12
  • 1970-01-01
  • 2013-02-28
  • 2021-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多