更新:
在python中,如何根据索引范围将列表拆分为子列表
e.g。原始清单:
list1 = [x,y,z,a,b,c,d,e,f,g]
使用索引范围0 - 4:
list1a = [x,y,z,a,b]
使用索引范围5-9:
list1b = [c,d,e,f,g]
谢谢!
我已经知道包含特定字符串的列表元素的(变量)索引,并希望根据这些索引值拆分列表。
还需要拆分成可变数量的子列表!即:
list1a
list1b
.
.
list1[x]
答案 0 :(得分:12)
在python中,它被称为切片。以下是python's slice notation的示例:
>>> list1 = ['a','b','c','d','e','f','g','h', 'i', 'j']
>>> print list1[:5]
['a', 'b', 'c', 'd', 'e']
>>> print list1[-5:]
['f', 'g', 'h', 'i', 'j']
请注意您如何正面或负面切片。添加负数时,表示我们从右向左切片。
答案 1 :(得分:10)
请注意,您可以在切片中使用变量:
l = ['a',' b',' c',' d',' e']
c_index = l.index("c")
l2 = l[:c_index]
这会将l的前两个条目放在l2
中答案 2 :(得分:4)
如果您已经知道指数:
list1 = ['x','y','z','a','b','c','d','e','f','g']
indices = [(0, 4), (5, 9)]
print [list1[s:e+1] for s,e in indices]
请注意,我们在结尾添加+1以使范围包含...
答案 3 :(得分:2)
如果您有多个索引或知道需要获取的索引范围,其中一种方法是:
split_points - 分割字符串或列表的点
k - 您需要拆分的范围,示例 = 3
split_points = [i for i in range(0, len(string), k)]
parts = [string[ind:ind + k] for ind in split_points]
答案 4 :(得分:1)
list1a=list[:5]
list1b=list[5:]
答案 5 :(得分:1)
list1=['x','y','z','a','b','c','d','e','f','g']
find=raw_input("Enter string to be found")
l=list1.index(find)
list1a=[:l]
list1b=[l:]
答案 6 :(得分:0)
考虑以下示例的核心伪代码:
def slice_it(list_2be_sliced, indices):
"""Slices a list at specific indices into constituent lists.
"""
indices.append(len(list_2be_sliced))
return [list_2be_sliced[indices[i]:indices[i+1]] for i in range(len(indices)-1)]