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

您将如何在每个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'],

]

只是想知道是否有一种快速的方法来做到这一点?


PIPIONE
浏览 154回答 2
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'],]a = 2r = a*aans = []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 hereprint(ans)

ibeautiful

我同意关于这是一种奇怪的“列化”方式的评论。但是,这是一个执行您所描述的功能的函数:def columnize(A, interval=2):&nbsp; &nbsp; ans = []&nbsp; &nbsp; for i in range(0,len(A), interval*2):&nbsp; &nbsp; &nbsp; &nbsp; for j in range(min(interval, len(A)-i)):&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ans.append(A[i+j] + (A[i+j+interval] if i+j+interval < len(A) else []))&nbsp; &nbsp; return ans
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python