我需要知道为什么这是这些python条件的输出

时间:2016-07-18 03:47:32

标签: python list list-comprehension

numbers=[i**3 for i in range (10) if i**3%3==1]
print(numbers)
#gets 1,64,343

为什么1, 64, 343是答案?

3 个答案:

答案 0 :(得分:2)

这相当于代码:

.costomclass {
  display:block color:red;
}
.normalClass {
  display:none
}

<div class="normalClass">blah bla blah</div>

$(function(){
  $('button').click(function(){
    $('.normalClass').toggleClass('costomclass');
  });

});

您正在检查当1到10之间的数字的立方体除以3时获得的余数是否等于1.如果是,则将其添加到列表并打印。

答案 1 :(得分:1)

第一个i位于[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]中 然后,如果(i*i*i) rem 3等于1
它选择(i*i*i)
对于[1,4,7]:(1*1*1)%3==1(4*4*4)%3==1(7*7*7)%3==1
1 * 1 * 1 = 1和1/3 = 0:余数= 1
4 * 4 * 4 = 64和64/3 = 21:余数= 1
7 * 7 * 7 = 343和343/3 = 114:余数= 1

所以输出是:
[1 * 1 * 1,4 * 4 * 4,7 * 7 * 7],[1,64,343]

您的代码:

numbers=[i**3 for i in range (10) if i**3%3==1]
print(numbers)

和这段代码:

numbers=[]
for i in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
    if (i*i*i) % 3 == 1:
         numbers.append(i*i*i)
print(numbers)

输出:

[1, 64, 343]

答案 2 :(得分:1)

  1. **的含义   例如:2**3 = 2*2*2 #this means 2 to the power 3 = 8
  2. %的含义   例如:5%2 = 1 #the sign means module, that means the remaining value after divide 5 by 2, it is one.
  3. 以你的方式,为每个人写的正确路径是

    for i in range(0,10):
        value = i**3
        if(value%3 == 1):
            print("the value is {0}".format(value))
    

    所以结果是:

    the value is 1
    the value is 64
    the value is 343
    
    for循环中的

    位解释

    • 首先获取i = 0,此时value = 0*0*0 = 0,然后value%3=0
    • 然后获取i=1,此时value = 1*1*1 = 1,&#39;值%3&#39;表示1%3 = 1,所以答案为1

    ....像这样看其他条件也。希望这对你有所帮助。