首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >给出一个列表[1,2,3,4]我们必须得到输出[24,12,8,6],这里我得到了答案,但当以不同的方式尝试相同的答案时,答案是错误的?

给出一个列表[1,2,3,4]我们必须得到输出[24,12,8,6],这里我得到了答案,但当以不同的方式尝试相同的答案时,答案是错误的?
EN

Stack Overflow用户
提问于 2018-07-26 01:42:40
回答 1查看 0关注 0票数 0

案例1:

代码语言:txt
复制
import numpy as np

r_numbers=[1,2,3,4]
numbers=[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]]

for i,items in enumerate(r_numbers):
    new_numbers=numbers[i]
    new_numbers.remove(items)
    print(np.product(new_numbers))

案例2:

代码语言:txt
复制
import numpy as np

r_numbers=[1,2,3,4]
numbers=[r_numbers for items in r_numbers]

for i,items in enumerate(r_numbers):
    new_numbers=numbers[i]
    new_numbers.remove(items)
    print(np.product(new_numbers))  
EN

回答 1

Stack Overflow用户

发布于 2018-07-26 11:28:11

你需要复制你正在使用的列表作为以下元素numbers

代码语言:javascript
复制
import numpy as np

r_numbers=[1,2,3,4]
numbers=[r_numbers[:] for items in r_numbers]   # This line has an '[:]' inserted.

for i,items in enumerate(r_numbers):
    new_numbers=numbers[i]
    new_numbers.remove(items)
    print(np.product(new_numbers))

没有复制,每个元素(“行”)numbers指向相同的底层4元素数组(r_numbers)。因此,当你删除for循环中的项目时,你将从所有子列表中删除该项目:

代码语言:javascript
复制
import numpy as np

r_numbers=[1,2,3,4]
numbers=[r_numbers for items in r_numbers]

for i,items in enumerate(r_numbers):
    new_numbers=numbers[i]
    new_numbers.remove(items)
    print(numbers)
    #print(np.product(new_numbers))  

输出:

代码语言:javascript
复制
[[2, 3, 4], [2, 3, 4], [2, 3, 4], [2, 3, 4]]  # After 1 iteration,  "all" 1s are removed
[[2, 4], [2, 4], [2, 4], [2, 4]]              # After 2 iterations, "all" 3s are removed

这不是原始代码的工作原理。

虽然你可以通过numbers这种方式创建列表清单,但为了清楚起见,通常首选以下方式:

代码语言:javascript
复制
numbers = [r_numbers[:] for _ in range(len(r_numbers)]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100005775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档