Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有谁能帮我编写这个列表的python代码,而不是按照我认为应该的方式工作_Python_List - Fatal编程技术网

有谁能帮我编写这个列表的python代码,而不是按照我认为应该的方式工作

有谁能帮我编写这个列表的python代码,而不是按照我认为应该的方式工作,python,list,Python,List,所以我有非常非常有限的编码知识和今天我在这里学到的一半代码,但我试图创建一个列表,它的长度是2020个正整数,它排除了所有可以被3或4整除但不能被5整除的数字。我试图弄清楚第2020个数字是什么,但我注意到,在我的最后一个排除了这些数字的列表中,在接近尾声的时候,这些数字仍然保留着 这是我写的代码: numbers = [*range(1, 2165, 1)] #print(numbers) list1 = [ x for x in range(1, 2165) if x % 3 == 0 a

所以我有非常非常有限的编码知识和今天我在这里学到的一半代码,但我试图创建一个列表,它的长度是2020个正整数,它排除了所有可以被3或4整除但不能被5整除的数字。我试图弄清楚第2020个数字是什么,但我注意到,在我的最后一个排除了这些数字的列表中,在接近尾声的时候,这些数字仍然保留着

这是我写的代码:

numbers = [*range(1, 2165, 1)]
#print(numbers)

list1 = [ x for x in range(1, 2165) if x % 3 == 0 and x % 4 == 0 and x % 5 != 0 ]
#print(list1)

for x in list1:
    numbers.remove(x)
print(len(numbers))
print(numbers)
就像我说的,我不太擅长编码,但它在列表的早期似乎确实起了作用,因为12被排除在外,60被保留在外,但在最后,2139被保留,可以被3整除。 我将感谢任何帮助

2020正整数长

对于这种情况,与其在固定范围内迭代(在您的情况下,从1到2165,这不会生成2020个与您的条件匹配的数字),通常更直接的方法是构建一个生成器,为您提供所需的数字,并通过
next()
从中获取数字,直到获得所需的数字。在这种情况下,考虑到你的条件

def my_generator():
  x = 0
  while True:
    x += 1
    # skip all numbers that are divisible by (3 or 4) but are not divisible by 5
    if ((x % 3 == 0) or (x % 4 == 0)) and (x % 5) != 0:
      continue
    yield x

# initialize the generator, and then grab exactly 2020 numbers from it
gen = my_generator()
numbers = [next(gen) for _ in range(2020)]
print("The 2020th number meeting the conditions is", numbers[-1])
# 3367
请注意,在您最初的问题中,您的
if
条件编码错误,我已在此处修复了它

2020正整数长

对于这种情况,与其在固定范围内迭代(在您的情况下,从1到2165,这不会生成2020个与您的条件匹配的数字),通常更直接的方法是构建一个生成器,为您提供所需的数字,并通过
next()
从中获取数字,直到获得所需的数字。在这种情况下,考虑到你的条件

def my_generator():
  x = 0
  while True:
    x += 1
    # skip all numbers that are divisible by (3 or 4) but are not divisible by 5
    if ((x % 3 == 0) or (x % 4 == 0)) and (x % 5) != 0:
      continue
    yield x

# initialize the generator, and then grab exactly 2020 numbers from it
gen = my_generator()
numbers = [next(gen) for _ in range(2020)]
print("The 2020th number meeting the conditions is", numbers[-1])
# 3367

请注意,在您最初的问题中,您的
if
条件编码不正确,我在这里修复了它。

如果您直接通过显式声明要匹配的条件而不是分多个步骤来构建列表,则可能会简化调试。您可以在一次理解中生成
数字

[x for x in range(1, 2165) if not(x % 3 == 0 and x % 4 == 0 and x % 5 != 0)]
或逻辑等价物:

[x for x in range(1, 2165) if x % 3 != 0 or x % 4 != 0 or x % 5 == 0]
如果您不确信这是相同的,您可以根据原始代码生成的
编号
列表对其进行测试:

>>> numbers == [x for x in range(1, 2165) if not(x % 3 == 0 and x % 4 == 0 and x % 5 != 0)]
True
2139出现在此列表中,因为
2139%4!=0


如果这与您试图捕获的条件不匹配,那么简化代码应该可以更容易地发现和修复问题。

如果您只是通过显式声明您试图匹配的条件而不是分多个步骤直接构建列表,那么可能会简化调试。您可以在一次理解中生成
数字

[x for x in range(1, 2165) if not(x % 3 == 0 and x % 4 == 0 and x % 5 != 0)]
或逻辑等价物:

[x for x in range(1, 2165) if x % 3 != 0 or x % 4 != 0 or x % 5 == 0]
如果您不确信这是相同的,您可以根据原始代码生成的
编号
列表对其进行测试:

>>> numbers == [x for x in range(1, 2165) if not(x % 3 == 0 and x % 4 == 0 and x % 5 != 0)]
True
2139出现在此列表中,因为
2139%4!=0


如果这与您试图捕获的条件不匹配,则简化代码会使查找和修复问题更容易。

2139不能被4整除。如果x%3==0和x%4==0和x%5!=如果(x%3==0或x%4==0)和x%5!=0“…可被3或4整除…”但在代码中,您有“如果x%3==0和x%4==0”,其中有,而不是OR@JustinEzequiel谢谢你,只是刚刚了解到“或”是一个东西2139不能被4整除。如果x%3==0和x%4==0和x%5!=如果(x%3==0或x%4==0)和x%5!=0“…可被3或4整除…”但在代码中,您有“如果x%3==0和x%4==0”,其中有,而不是OR@JustinEzequiel谢谢你,只是刚刚才知道“或”是一回事