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

定期切片列表列表然后合并

定期切片列表列表然后合并

PIPIONE 2021-08-17 09:30:45
您将如何在每个x索引处“列化”列表列表?我正在考虑通过获取起始列表,然后创建两个新列表,合并它们,然后添加不能被x.例如间隔为 2:start = [    [1, 'one'],    [2, 'two'],    [3, 'three'],    [4, 'four'],    [5, 'five'],    [6, 'six'],    [7, 'seven'],    [8, 'eight'],    [9, 'nine'],]expected = [    [1, 'one', 3, 'three'],    [2, 'two', 4, 'four'],    # page break    [5, 'five', 7, 'seven'],    [6, 'six', 8, 'eight'],    # page break    [9, 'nine'],]只是想知道是否有一种快速的方法来做到这一点?
查看完整描述

2 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

你在寻找这样的东西吗?列化平方矩阵?


start = [

    [1, 'one'],

    [2, 'two'],

    [3, 'three'],

    [4, 'four'],

    [5, 'five'],

    [6, 'six'],

    [7, 'seven'],

    [8, 'eight'],

    [9, 'nine'],

]

expected = [

    [1, 'one', 3, 'three'],

    [2, 'two', 4, 'four'],

    # page break

    [5, 'five', 7, 'seven'],

    [6, 'six', 8, 'eight'],

    # page break

    [9, 'nine'],

]

a = 2

r = a*a

ans = []

for i in range(0, len(start), r):

    l_tmp = start[i:i+r]

    if l_tmp[::a]:

        ans.append([item for sublist in l_tmp[::a] for item in sublist])

    if l_tmp[1::a]:

        ans.append([item for sublist in l_tmp[1::a] for item in sublist])

    # You can easily add page break here

print(ans)


查看完整回答
反对 回复 2021-08-17
?
ibeautiful

TA贡献1993条经验 获得超5个赞

我同意关于这是一种奇怪的“列化”方式的评论。但是,这是一个执行您所描述的功能的函数:


def columnize(A, interval=2):

    ans = []

    for i in range(0,len(A), interval*2):

        for j in range(min(interval, len(A)-i)):

            ans.append(A[i+j] + (A[i+j+interval] if i+j+interval < len(A) else []))

    return ans


查看完整回答
反对 回复 2021-08-17
  • 2 回答
  • 0 关注
  • 153 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号