Python:根据索引范围将列表拆分为子列表

Posted

技术标签:

【中文标题】Python:根据索引范围将列表拆分为子列表【英文标题】:Python: Split a list into sub-lists based on index ranges 【发布时间】:2013-09-05 09:59:42 【问题描述】:

更新:

在python中,如何根据索引范围将列表拆分为子列表

例如原名单:

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]

【问题讨论】:

list1a = list1[0:5]。这称为切片。 【参考方案1】:

在python中,它被称为切片。以下是python's slice notation 的示例:

>>> list1 = ['a','b','c','d','e','f','g','h', 'i', 'j', 'k', 'l']
>>> print list1[:5]
['a', 'b', 'c', 'd', 'e']
>>> print list1[-7:]
['f', 'g', 'h', 'i', 'j', 'k', 'l']

请注意如何进行正面或负面切片。当你使用负数时,这意味着我们从右到左切片。

【讨论】:

为了清楚起见,您可以正数或负数,然后从该点向右或向左输出,如>>> print(list1[-7:])>>> print(list1[:-7])(不是这两个例子中的冒号)。您还可以将“7”替换为一个变量,该变量可以让您(基于知道索引)将数组分割成所需数量的子数组。【参考方案2】:

请注意,您可以在切片中使用变量:

l = ['a',' b',' c',' d',' e']
c_index = l.index("c")
l2 = l[:c_index]

这会将 l 的前两个条目放在 l2 中

【讨论】:

【参考方案3】:

如果您已经知道索引:

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 以使范围包含在内...

【讨论】:

【参考方案4】:
list1a=list[:5]
list1b=list[5:]

【讨论】:

那么你想在什么基础上拆分?分成两半? 两个变量。基于包含某些字符串的列表元素的索引,该字符串也是可变的。即分裂元素索引是可变的 @2one 使用list.index 查找索引并将其传递给切片。 您的意思是,您将查找某个字符串,然后拆分到该字符串并将其他部分拆分为另一个字符串? @2one ya 使用 list.index 是最好和最简单的方法!【参考方案5】:

如果您有多个索引或知道需要获取的索引范围,其中一种方法:

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]

【讨论】:

【参考方案6】:
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:]

【讨论】:

【参考方案7】:

考虑以下示例的核心伪代码:

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)]

【讨论】:

以上是关于Python:根据索引范围将列表拆分为子列表的主要内容,如果未能解决你的问题,请参考以下文章

根据唯一值将列表拆分为子列表

如何将列表中的连续元素拆分为子列表

python中split的用法分割的字符串怎么命名?

Python 在给定的开始/结束关键字处将列表拆分为子列表

根据 Python 中的一组索引将列表拆分为多个部分

根据 NSDictionary 键值将 NSArray 拆分为子数组