use*_*615 18 python indexing list subset
一个列表:
a = ['a', 'b', 'c', 3, 4, 'd', 6, 7, 8]
Run Code Online (Sandbox Code Playgroud)
我想要一个使用子集的列表a[0:2],a[4], a[6:]
,
那是我想要一个清单 ['a', 'b', 4, 6, 7, 8]
G. *_*hen 24
假设
a = ['a', 'b', 'c', 3, 4, 'd', 6, 7, 8]
Run Code Online (Sandbox Code Playgroud)
并且索引列表存储在
b= [0, 1, 2, 4, 6, 7, 8]
Run Code Online (Sandbox Code Playgroud)
那么一个简单的单线解决方案就是
c = [a[i] for i in b]
Run Code Online (Sandbox Code Playgroud)
rlm*_*lms 20
试试new_list = a[0:2] + [a[4]] + a[6:]
.
或者更一般地说,这样的事情:
from itertools import chain
new_list = list(chain(a[0:2], [a[4]], a[6:]))
Run Code Online (Sandbox Code Playgroud)
这也适用于其他序列,并且可能更快.
或者你可以这样做:
def chain_elements_or_slices(*elements_or_slices):
new_list = []
for i in elements_or_slices:
if isinstance(i, list):
new_list.extend(i)
else:
new_list.append(i)
return new_list
new_list = chain_elements_or_slices(a[0:2], a[4], a[6:])
Run Code Online (Sandbox Code Playgroud)
但请注意,如果列表中的某些元素本身就是列表,则会导致问题.为了解决这个问题,无论是使用以前的解决方案之一,或更换a[4]
与a[4:5]
(或更一般a[n]
用a[n:n+1]
).