如何修改for循环中的序列(非范围)?

时间:2019-06-17 11:17:35

标签: python python-3.x for-loop

我只想得到一个质数列表,但是我发现for循环比我想象的要多,即使我用相同的名称修改了变量,序列似乎也没有改变。

我尝试将nums命名为全局名称,但没有任何改变。

nums = list(range(2, 11))
count = 0
for num in nums:
    nums = list(filter(lambda a: a == num or a % num, nums))
    count += 1
print(count)  # 9
print(nums)

我希望nums = list...可以修改for num in nums中的数字,计数为4。 谢谢。

2 个答案:

答案 0 :(得分:0)

在不完全了解您为什么想要做自己想做的事情以及是否有必要或避免的情况下,这里有一个解决方案可能会满足您的要求:

nums = list(range(2, 11))
count = 0
for num in nums:
    new_nums = list(filter(lambda a: a == num or a % num, nums))
    del nums[:]
    nums.extend(new_nums)
    count += 1
print(count)  # 4
print(nums)

您最初的实现是创建一个新变量,其名称为旧名称nums。但是,它是循环不知道的新变量/内存对象。提出的解决方案保留了原始对象并对其进行了修改,方法是先删除所有现有元素,然后添加列表中的所有新元素。

答案 1 :(得分:0)

这可以解决您的问题吗?

{% if is_user_logged_in %}DP{% else %}DPCP{% endif %}
{% if wp.is_user_logged_in %}DP{% else %}DPCP{% endif %}

[2,3,5,7]

4