gpt4 book ai didi

python - 内存高效填充列表

转载 作者:行者123 更新时间:2023-11-28 19:49:11 26 4
gpt4 key购买 nike

我有一个 list

a = ['a', 'b', 'c']

给定长度,我想在要获取的每个项目之后插入某个元素 'x'

ax = ['a', 'x', 'b', 'x', 'c', 'x']

由于元素很大,我不想做很多pop或子列表。

有什么想法吗?

最佳答案

由于列表很大,最好的方法是使用生成器,就像这样

def interleave(my_list, filler):
for item in my_list:
yield item
yield filler

print list(interleave(['a', 'b', 'c'], 'x'))
# ['a', 'x', 'b', 'x', 'c', 'x']

或者你可以像这样返回一个链式迭代器

from itertools import chain, izip, repeat
def interleave(my_list, filler):
return chain.from_iterable(izip(my_list, repeat(filler)))
  1. repeat(filler) 返回一个给 filler 无限次的迭代器。

  2. izip(my_list, repeat(filler)) 返回一个迭代器,一次从 my_listrepeat(filler )。所以,list(izip(my_list, repeat(filler))) 的输出看起来像这样

    [('a', 'x'), ('b', 'x'), ('c', 'x')]
  3. 现在,我们所要做的就是展平数据。因此,我们将 izip 的结果与 chain.from_iterable 链接起来,一次从 iterable 中给出一个值。

关于python - 内存高效填充列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22831271/

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