【发布时间】:2015-04-28 11:11:33
【问题描述】:
我正在尝试遍历 Python 2D 列表。当算法遍历列表时,它会将键添加到新列表中,直到检测到新值。然后对列表应用一个操作,然后清空列表,以便再次使用它,如下所示:
original_list = [('4', 'a'), ('3', 'a'), ('2', 'a'), ('1', 'b'), ('6', 'b')]
当original_list被算法读取时,它应该评估每个对象的第二个值,并解密它是否与前一个值不同;如果没有,请将其添加到临时列表中。
这是伪代码
temp_list = []
new_value = original_list[0][1] #find the first value
for key, value in original_list:
if value != new_value:
temp_list.append(new_value)
应该输出
temp_list = ['4', '3', '2']
【问题讨论】:
-
那么你的问题是什么?如果您将预期的输出添加到问题中会更好!
-
This answer explains OrderedDicts for you 如果您更喜欢使用可排序的字典系统。
-
请注意:将
new_value定义为"a"将导致第一次迭代对temp_list执行某些操作,这将是空的。我想这是不可取的。也许添加到比较中:if value != new_value and temp_list:,以确保您不会对空列表进行操作? -
似乎有什么问题?
-
你也可以使用排序的dict-like类型。在 PyPI 和其他地方(blist、SortedCollections、sortedcontainers、rbtree、bintrees、skiplistdict ......)有很多选项可以在您对它们进行变异时保持排序顺序(代价是某些操作需要对数时间而不是线性时间)。
标签: python list loops iteration