Comprenhension不会返回与正常for循环相同的结果

时间:2017-06-08 20:03:33

标签: python nested list-comprehension

在Python 2.7中,我有一些代码:

values = list()
for i in dict.keys():
    values.append( (i,)+dict[i] )

返回values列表,其长度为2428。

相同,但是在理解模式下返回长度列表 - > 1,每个2428个元素嵌套1层深(len(values[0]) - > 2428):

values = list()
values.append( (i,)+dict[i] for i in dict.keys() )

我简直想知道为什么。我必须错过一些东西。

1 个答案:

答案 0 :(得分:3)

您刚刚将生成器表达式(单个对象)附加到列表中。

你可以extend列表中的values = list() values.extend( (i,)+dct[i] for i in dct ) 。进出口。这是一个可迭代的:

values = [(k,)+v for k, v in dct.items()]

或使用列表理解来构建列表,这是更标准的方式:

items

请注意,我已经使用dict的.keys方法一次性生成键值对,当你在dict上迭代dict时可以删除dict $(this).find('input').length > 0 //or just $(this).find('input').length //since it is truthy. or $(this).find('> input').length //if you only want to search one level deep 1}}不是一个好名字,因为它会影响内置def answer_replace(data): replaced_data = [] for element in data: replaced_element = [] for index, item in enumerate(element): if index == 5 or index == 7 or index == 8 or index == 10 or index == 12 or index == 15: newitem = item.split(',') temp = [] for item in newitem: item = item.strip() temp.append(re.sub(item, answer_replacement[index][item], item)) replaced_element.append(temp) elif index in answer_replacement: replaced_element.append(answer_replacement[index].get(item, item)) else: # no replacement available for this index replaced_element.append(item) replaced_data.append(replaced_element) return replaced_data

您可以阅读有关Generator expressions的更多信息。