【问题标题】:how to divide each element of an entire list by a constant如何将整个列表的每个元素除以一个常数
【发布时间】:2017-08-10 15:05:10
【问题描述】:

我试图划分列表的每个元素以查看列表中的数字是否返回偶数。我想要的是将list_accepted_ant 中的偶数值附加到set_accepted_list。目前,当我打印值时,所有值都附加到set_accepted_list。任何帮助将不胜感激。

def DoIOpenTheDoor(list_ant_id):
    list_accepted_ant = []                      
    set_accepted_list = set()
    set_forbidden_list = set()
    set_list_ant_id = set(list_ant_id)
    if len(list_accepted_ant) < num_accepted:
        if len(list_ant_id) > 0:
            list_accepted_ant.extend(list_ant_id[0:min(len(list_ant_id))
                if (all(x % 2 == 0 for x in list_accepted_ant)): 
                    list_accepted_ant.append(list_accepted_ant)
    set_accepted_list = set(list_accepted_ant)  
    print "the set of even accepted ant-",(set_accepted_list) 
    print "the list of all ants-",(list_ant_id)    
    set_forbidden_list = set_list_ant_id-set_accepted_list
    return set_accepted_list,set_list_ant_id,set_forbidden_list

这是我运行代码时的输出:

list_ant_id = [1082, 1091, 1055, 1057, 971, 977, 728, 740]

set_accepted_list = set([1057, 1091, 740, 971, 977, 728, 1082, 1055])

我期待的set_accepted_list = set([740,728,1082])

基本上我想要的是保持从 list_ant_id 到 set_accepted_list 的偶数值。

【问题讨论】:

  • if len(list_ant_id) &gt; 0:后出现缩进错误
  • list_accepted_ant ==0 是一个布尔值,而您正在尝试执行 for x in 那个....一个布尔值,因此您的错误

标签: python list function set


【解决方案1】:

问题是您试图将可迭代的x/2 for x in list_accepted_ant 与数字0 进行比较,因此请更改:

([x/2 for x in list_accepted_ant ==0]): #for even number ants

all(x % 2 == 0 for x in list_accepted_ant))

上一行基本上是说list_accepted_ant 的每个元素检查它们是否都是偶数。

【讨论】:

  • 错误已解决,但我无法获得所需的结果。
  • @imigyelvargasf。我已经编辑了问题并提供了输入和预期输出。
猜你喜欢
  • 1970-01-01
  • 2016-05-12
  • 2016-05-23
  • 1970-01-01
  • 2018-10-12
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 2012-03-29
相关资源
最近更新 更多