gpt4 book ai didi

python - 列表的切片模式

转载 作者:太空宇宙 更新时间:2023-11-03 17:07:58 25 4
gpt4 key购买 nike

我有一个列表,其中元素数量未定义:

l1 = [a, b, c, d ...]

我需要创建一个列表:

l2 = [[a,a],[a,b],[b,b],[b,c],[c,c],[c,d],[d,d],[d,e],...]

现在,为了获得 l2,我这样做了:

l1 = sorted(l1*4)[1:-1]
l2 = [l1[x:x+2] for x in xrange(0,len(l1),2)]

它可以工作,但我不喜欢它,因为如果 l1 中的元素数量非常大,那么这段代码将占用大量内存(*4)和时间(已排序)消费。您对如何做到这一点有什么建议吗?

最佳答案

这是我使用列表推导式的方法:

In [46]: from itertools import izip, islice

In [47]: l1 = ['a', 'b', 'c', 'd', 'e']
In [48]: l2=[x for (a,b) in izip(l1, islice(l1, 1,None)) for x in ([a,a],[a,b])] ; l2 += [[b,b]]

In [49]: l2
Out[49]:
[['a', 'a'],
['a', 'b'],
['b', 'b'],
['b', 'c'],
['c', 'c'],
['c', 'd'],
['d', 'd'],
['d', 'e'],
['e', 'e']]

关于python - 列表的切片模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34419293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com