首页 > 解决方案 > 如何删除 Python 列表中的每个第 n 个术语

问题描述

我需要使用 Python 解决问题。我可以在没有代码的情况下解决问题,如果您在互联网上搜索答案是公开的。我无法让我的代码解决这个问题。无论如何,这是一个问题:

史蒂夫从左到右按顺序重复写了数字 1、2、3、4 和 5,形成了一个 10,000 个数字的列表,从 123451234512.... , 6th, 9th, ... 数字从左边开始),然后从结果列表中删除每第四个数字(即剩余的从左边开始的第 4、8、12、... 数字),然后删除每个从那时剩下的第五位数字。2019 年、2020 年、2021 年的三位数字之和是多少?

我已经编写了 python 代码来将所有数字打印到一个列表中。我需要弄清楚如何删除每个第 n 个数字。

list = []
value = 1
for i in range (10000):
    list.append (value)
    value = value + 1
    if value == 6:
        value = 1

这是写出前 10,000 位数字的代码。

在以前的课程中,我编写了一个代码来删除每个第 n 个术语并将其打印出来。该代码如下所示:

n = 3
def RemoveThirdNumber(int_list):


    pos = n - 1
    index = 0
    len_list = (len(int_list))

    while len_list > 0:

        index = (pos + index) % len_list

        print(int_list.pop(index))
        len_list -= 1

nums = [1, 2, 3, 4]
RemoveThirdNumber(nums)


print(list)

我需要帮助来更改该代码,以便每隔三个术语删除一次它会遍历列表并打印出剩余的数字。

所以这意味着,而不是输出

3
2
4
1

这将是

[1,2,4]

感谢您尝试提供帮助!

标签: python

解决方案


a = [1,2,3,4,5] * (10000//5)
a = [a[i] for i in range(len(a)) if i%3 != 2]
a = [a[i] for i in range(len(a)) if i%4 != 3]
a = [a[i] for i in range(len(a)) if i%5 != 4]

print(a[2019:2022])  # --> [2, 5, 3]
print(sum(a[2019:2022]))  # --> 10

推荐阅读