有没有办法在矩阵中选择每个第二个或第三个(例如)项目?
例如:
f = [["1", "5", "8", "9"], ["2", "6", "9", "10"], ["3", "7", "11", "12"]]
我想知道是否有直接的功能来选择每个列表中的每个第二个数字(最好还将这些数字放在列表中)。由此产生:
["5", "6", "7"]
我知道我可以使用循环实现这一目标,但我想知道我是否可以直接实现这一目标。
答案 0 :(得分:5)
没有任何循环(外部)
>>> f = [["1", "5", "8", "9"], ["2", "6", "9", "10"], ["3", "7", "11", "12"]]
>>> list(map(lambda x:x[1],f)) # In python2, The list call is not required
['5', '6', '7']
参考:map
没有循环的另一种方法(礼貌:Steven Rumbalski)
>>> import operator
>>> list(map(operator.itemgetter(1), f))
['5', '6', '7']
参考:itemgetter
另一种没有循环的方法(礼貌:Kasra A D)
>>> list(zip(*f)[1])
['5', '6', '7']
参考:zip
答案 1 :(得分:5)
seconds = [x[1] for x in f]
答案 2 :(得分:0)
您可以使用列表理解:
i = 1 # Index of list to be accessed
sec = [s[i] for s in f if len(s) > i]
此代码还将检查每个子列表中的索引是否为有效值。