Python 如何从每个x元素之间的列表中删除元素
我正在努力找出如何删除第一个元素之间的每个元素,如果它在3个数字以内。下面举例说明了一些输入Python 如何从每个x元素之间的列表中删除元素,python,list,Python,List,我正在努力找出如何删除第一个元素之间的每个元素,如果它在3个数字以内。下面举例说明了一些输入lst的预期输出 lst = [0,1,2,3,4,5,8] -> [0,3,8] lst = [0,1,2,3,4,5,8,15] -> [0,3,8,15] lst = [0,1,2,3,4,5,8,15,55] -> [0,3,8,15,55] 元素15和15,55幸存下来,因为它们不在“每3个数字”之间(即索引号为0、3、6、9等的列表元素之间) 这
lst
的预期输出
lst = [0,1,2,3,4,5,8] -> [0,3,8]
lst = [0,1,2,3,4,5,8,15] -> [0,3,8,15]
lst = [0,1,2,3,4,5,8,15,55] -> [0,3,8,15,55]
元素15
和15,55
幸存下来,因为它们不在“每3个数字”之间(即索引号为0、3、6、9等的列表元素之间)
这是我的尝试,但它似乎输出列表而不删除任何内容
输出
[0,1,2,3,4,5,8,15,55]
很抱歉在我的原始帖子上没有做出努力,我今天大部分时间都在努力解决这个问题,我需要尽快解决。感谢比尔澄清我也澄清了我的尝试。解决方案
例子
据我所知,您希望这样做:
def function(a_list, jump=3):
result = []
for i in range(0, len(a_list), jump):
result.append(a_list[i])
for j in range(i+1, len(a_list)):
result.append(a_list[j])
return result
请澄清这些要求。这些要求有什么不清楚的地方?我不确定你到底想做什么,但这似乎是一个可以用过滤器解决的问题。你可以检查为什么15,55在输出列表中?我已经根据上面给出的信息编辑了你的帖子。请检查它是否与您的意图相似。下次请务必花些时间举例说明逻辑。
[element for i, element in enumerate(lst) if (i % 3 == 0) or (i >= 3 * ((len(lst) - 1) // 3))]
lst = [0,1,2,3,4,5,8]
[element for i, element in enumerate(lst) if (i % 3 == 0) or (i >= 3 * ((len(lst) - 1) // 3))]
Out[35]: [0, 3, 8]
lst = [0,1,2,3,4,5,8,15]
[element for i, element in enumerate(lst) if (i % 3 == 0) or (i >= 3 * ((len(lst) - 1) // 3))]
Out[37]: [0, 3, 8, 15]
lst = [0,1,2,3,4,5,8,15,55]
[element for i, element in enumerate(lst) if (i % 3 == 0) or (i >= 3 * ((len(lst) - 1) // 3))]
Out[39]: [0, 3, 8, 15, 55]
def function(a_list, jump=3):
result = []
for i in range(0, len(a_list), jump):
result.append(a_list[i])
for j in range(i+1, len(a_list)):
result.append(a_list[j])
return result