Python:如何从列表b中选取列表a指定索引的元素(避免类型错误)
解决方法
嘿,这个问题我太熟悉啦!要在不能用b[a]的前提下,获取b[x]和b[y]对应的元素,有几个超简洁的方法,给你挨个唠唠:
列表推导式(最直观易读)
这应该是最顺手的写法,一行代码就能搞定:[b[i] for i in a]比如如果
a = [2,5],运行后就会得到[b[2], b[5]],可读性拉满,新手也能一眼看懂。operator.itemgetter(高效批量处理)
要是你需要处理大量索引,或者追求性能,这个方法更合适。先导入工具,再批量取值:from operator import itemgetter result = itemgetter(*a)(b) # 如果需要列表类型,转一下就行 result_list = list(result)它会返回一个元组,转成列表也很方便,性能比列表推导式略优。
map函数(另类简洁写法)
还有个用map的小技巧,不过可读性稍弱一点,适合喜欢极简风格的同学:list(map(b.__getitem__, a))原理是把
a里的每个元素作为参数传给b.__getitem__,也就是逐个索引b,最后转成列表。
顺便提一嘴为啥b[a]会报错——Python列表的索引只能是整数、切片或者布尔数组(numpy里的情况),直接传普通列表当索引是不被允许的,所以得把a里的元素逐个拿出来用~
内容的提问来源于stack exchange,提问作者Michael Anthony
相关产品推荐
相关产品推荐

