我的代码中有一个奇怪的bug,可以追溯到itemgetter
的以下行为:
>>> from operator import itemgetter
>>> l = ['abc', 'def', 'ghi']
>>> index_list_1 = [0]
>>> index_list_2 = [0, 1]
>>> list(itemgetter(*index_list_1)(l))
['a', 'b', 'c']
>>> list(itemgetter(*index_list_2)(l))
['abc', 'def']
我希望index_list_1
的输出是['abc']
,但是如果itemgetter
只有一个要提取的项,它将返回元素而不是一个元组。你知道吗
我是不是用错了itemgetter
?你知道吗
如果只提取一个值,如何确保得到一个单例列表?你知道吗
一切看起来都很好:
itemgetter(*[0])(['abc'])
返回abc
,您正在从中构建一个list
。list('abc')
将其输入转换为list
并返回['a', 'b' 'c']
。你知道吗解决问题的一个愚蠢方法是:
。。。或者
其中
l
是用于提取值的索引列表m
是值列表。你知道吗如果
l
是空列表,这就不起作用,但是itemgetter
也不能处理这种情况,尽管一致的行为是返回()
。你知道吗itemgetter
的行为非常不幸。你知道吗在这种情况下,最好的选择可能是
相关问题 更多 >
编程相关推荐