我有以下Python列表(也可以是一个元组):
myList = ['foo', 'bar', 'baz', 'quux']
Run Code Online (Sandbox Code Playgroud)
我可以说
>>> myList[0:3]
['foo', 'bar', 'baz']
>>> myList[::2]
['foo', 'baz']
>>> myList[1::2]
['bar', 'quux']
Run Code Online (Sandbox Code Playgroud)
如何明确选择索引没有特定模式的项目?例如,我想选择[0,2,3].或者从1000个项目的非常大的列表中,我想选择[87, 342, 217, 998, 500].是否有一些Python语法可以做到这一点?看起来像:
>>> myBigList[87, 342, 217, 998, 500]
Run Code Online (Sandbox Code Playgroud) 如果你在python中有一个列表,并希望将索引中的元素1,2和5提取到一个新列表中,你该怎么办?
这就是我做到的,但我不是很满意
>>> a
[10, 11, 12, 13, 14, 15]
>>> [x[1] for x in enumerate(a) if x[0] in [1,2,5]]
[11, 12, 15]
Run Code Online (Sandbox Code Playgroud)
有更好的方法吗?
更一般地说,给定一个带索引的元组,如何使用这个元组从列表中提取相应的元素,最终重复(例如元组(1,1,2,1,5)产生[11,11,12,11] ,15])
我有两个清单a=[10,5,6,8]和b=[1,3].我如何使用后者作为前者的下标?即我想提取第二和第四个元素a.
否则,在Matlab我会用
v = [16 5 9 4 2 11 7 14];
v([1 5 6]) % Extract the first, fifth, and sixth elements
>> ans =
16 2 11
Run Code Online (Sandbox Code Playgroud)
我怎样才能在Python中做同样的事情?
表达问题相当简单,但我不能 100% 确定我的行话是正确的。尽管如此,从概念上讲,“樱桃采摘”很适合描述我心目中的切片。这是因为我只是想访问(从所有元素中挑选)列表中两个相距较远的元素。我试过这个:
my_list[2,7]
Run Code Online (Sandbox Code Playgroud)
所以我期望它只返回 2 个元素,但我得到了错误:
列表索引必须是整数,而不是元组。
我搜索了这个错误,但我发现这实际上是一个非常普遍的错误,并且引发此错误的问题实际上都不是针对我的问题类型的。
我想我可以一次提取元素 1 然后合并它们,但我的直觉告诉我有一种更“ Pythonic ”的方式。
我遇到的这个问题的一个稍微复杂的形式是从现有的列表列表中构建一个新列表:
new_list = []
for i in range(len(my_list)):
new_list.append(my_list[i][2,7])
Run Code Online (Sandbox Code Playgroud)