0

这是我应该做的:

给定变量nums,其值为整数列表,编写一个赋值语句,将square_odds列表中奇数平方的列表分配给变量nums

您必须使用列表理解。

这是我到目前为止所拥有的,我知道范围部分是错误的,但它应该是什么样子?

nums = [2 ** square_odds for square_odds in range(nums) if square_odds != x%2]

我认为还有其他地方是错误的,但我不确定。

我把它改成

nums = [square_odds**2 for square_odds in range(100) if square_odds%2 != 0] 

我收到了消息

错误:你没有分配到 square_odds。

4

4 回答 4

2

此外,由于 nums 已经是一个列表,因此不要使用 range(nums)。Range 返回给定开始和停止值的列表。以这种方式遍历您的列表编号(您的列表理解的一部分):

[SQUARING OPERATION HERE  for num in nums MODULO TEST HERE]

因为这是家庭作业,所以我不会全部写出来。

于 2012-10-20T14:00:00.527 回答
1
  • 要测试一个数字是否为奇数,您需要取其模数2并测试它是否为 0。所以,如果num % 2 != 0,那么你numodd

  • 要对给定数字求平方,您可以: -number ** 2不是 2 ** number

  • 您在函数中还有一个3rd参数range,表示step-value. 您可以使用它(range(1, last_num, 2))来获取odd数字。这样你就不需要modulus操作员了。

您可以进行上述更改以进行列表理解工作。

鉴于您的问题,nums数字列表在哪里,您需要使用nums而不是range(nums)这样:-

nums = [square_odds**2 for square_odds in nums if square_odds%2 != 0] 
于 2012-10-20T13:53:11.763 回答
0
nums = [square_odds**2 for square_odds in range(nums) if square_odds%2 != 0]
于 2012-10-20T13:55:32.747 回答
0

这个解决方案怎么样?

square_odds=[i*i for i in filter(lambda x:x&1,nums)]
于 2012-10-20T19:18:26.330 回答