Python如何按指定步长循环排除列表元素后获取最终剩余项
循环排除元素取剩余项实现方案
你描述的是经典的约瑟夫环场景,以下是易读易懂的Python实现,完全匹配你给出的规则:
完整可运行代码
def find_last_element(x, original_list): # 拷贝原始列表避免修改原输入数据 current_list = original_list.copy() # 记录下一轮计数的起始索引,初始从列表头部(索引0)开始 start_idx = 0 # 循环直到列表仅剩1个元素 while len(current_list) > 1: # 计算要移除的元素索引,取模运算处理计数到末尾循环到头部的场景 remove_idx = (start_idx + x - 1) % len(current_list) # 移除对应位置元素 current_list.pop(remove_idx) # 下一轮起始位置为本次移除的索引位置(元素移除后后续项前移,刚好对应被删元素的下一位) start_idx = remove_idx return current_list[0] # 测试你给出的示例 x = 4 my_list = ["apple", "banana", "candy", "durian", "elephant", "flower"] result = find_last_element(x, my_list) print(result) # 输出结果为 elephant
核心逻辑说明
- 每次计算移除索引时用
% len(current_list)取模,自动适配当前列表长度,不需要手动处理循环跳转逻辑 - 全程操作原始列表的拷贝副本,不会修改你输入的原始数据
- 代码逻辑和你给出的示例规则完全对齐,测试运行结果与你示例的最终输出
elephant一致
内容的提问来源于stack exchange,提问作者Jakeyyyy
相关产品推荐
相关产品推荐

