在python列表中捕获多组项目

时间:2019-03-02 04:30:20

标签: python

我在python中有一个列表。假设列表的名称为record

我知道record[0]给了我第一张唱片, 我知道record[3:5]给了我第三和第四条记录。

如果我需要在同一列表中的第一个record[0]record[12:15]record[35:39]

谢谢!

更新#1:重新措词。

我有120个元素的列表。此列表表示一个非规范化表。

我需要将列表分解成多个较小的列表,以便可以规范化信息。

上面的问题是其中一个较小列表的逻辑,因此我可以将它们注入数据框,以便可以将记录添加到表(df.to_sql)中。 谢谢。

3 个答案:

答案 0 :(得分:1)

如果要提取的子范围很长,或者想要一个漂亮的语法,则可以定义一个函数来从数组中获取多个子范围:

from itertools import chain

def extract(array,ranges):
    return list(chain( * (array[s:e] for s,e in ranges.items()) ))

array    = list(range(100,200))
subArray = extract(array,{ 0:1, 12:15, 35:39 })

print(subArray) # [100, 112, 113, 114, 135, 136, 137, 138]

答案 1 :(得分:0)

我不明白你在问什么。

如果您需要record[0]record[12:15]record[35:39],那么就可以了。  去拿是什么阻止了你?

您需要将那些元素组合到自己的较小列表中吗?

答案 2 :(得分:-1)

由于您没有提到您,我不确定您的确切问题是什么,但是如果您试图将相似的项目组合在一起,但还需要一个列表,为什么不使用字符串作为键并将值作为列表的字典。还有其他方法可以使用functools或iter utils

示例

ThreadPoolExecutor