为了账号安全,请及时绑定邮箱和手机立即绑定

在python中捕获列表中的多组项目

在python中捕获列表中的多组项目

一只名叫tom的猫 2021-11-23 19:55:01
我在python中有一个列表。假设列表的名称是record。我知道record[0]给了我第一个记录,我知道record[3:5]给了我第三个和第四个记录。如果我需要在第一record[0]和record[12:15]和record[35:39]同一个列表?谢谢!更新 #1:改写。我有这个包含 120 个元素的列表。此列表表示非规范化表。我需要将列表拆分成多个较小的列表,以便对信息进行规范化。上面的问题是较小列表之一的逻辑,因此我可以将它们注入数据帧,以便将记录添加到表 ( df.to_sql) 中。谢谢。
查看完整描述

3 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

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


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]


查看完整回答
反对 回复 2021-11-23
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

我不明白你在问什么。

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

您是否需要将这些元素组合到它们自己的较小列表中?


查看完整回答
反对 回复 2021-11-23
?
桃花长相依

TA贡献1860条经验 获得超8个赞

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


例子


items = [1,2,3,1,2,4,5,6,7,8,2,1,3,4,1,2,1,1]


dict_of_keys = {}


for i in items:

    if i not in dict_of_keys:

        dict_of_keys[i] = []


    dict_of_keys[i].append(i)


print(dict_of_keys)


{1: [1, 1, 1, 1, 1, 1], 2: [2, 2, 2, 2], 3: [3, 3], 4: [4, 4], 5: [5], 6: [6], 7: [7], 8: [8]}


查看完整回答
反对 回复 2021-11-23
  • 3 回答
  • 0 关注
  • 180 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信