将连续的x值添加到列表中

时间:2017-03-31 07:05:55

标签: python list

假设我有一个包含项目[123, 124, 125, ... 9820]的列表,并且从该列表中我想要附加到第二个列表,其中每8个项目的字符串由空格分隔直到结束。例如,列表将具有:

["123 124 125 126 127 128 129 130", "131, 132, 133, 134, 135, 136, 137, 138",..]

在python中执行此操作的最佳方法是什么?我尝试了一个从123到9820循环的天真解决方案,但这需要太多的运行时间并超出我设置的一些简单测试。有什么功能对我有用吗?

3 个答案:

答案 0 :(得分:2)

将元素收集到长度为8的块中并使用join()。以下是使用itertools中的改编食谱的示例:

from itertools import zip_longest

lst = [str(x) for x in range(123, 9821)]


def grouper(iterable, n, fillvalue=""):
    "Collect data into fixed-length chunks or blocks"      
    args = [iter(iterable)] * n 
    return zip_longest(*args, fillvalue=fillvalue)

lst2 = [" ".join(x) for x in grouper(lst, 8)]

答案 1 :(得分:1)

我们必须跳过8个索引才能从项目列表中获取下一个项目。

<强>演示

  1. items list个数字1 to 999开始考虑,Length的{​​{1}}为items list
  2. 然后使用999for loop函数在项目列表中跳转range索引。
  3. 使用8字符串方法获取最终结果。
  4. <强>码

    append

答案 2 :(得分:1)

我认为这可以完成你想要的工作:

代码:

list = [str(x) for x in range(123, 9821)]
results = []

for index in range(0, len(list), 8):
  results.append(" ".join(list[index:index+8]))

print(results)

输出:

[
    '123 124 125 126 127 128 129 130', 
    '131 132 133 134 135 136 137 138', 
    '139 140 141 142 143 144 145 146', 
    '147 148 149 150 151 152 153 154', 
    '155 156 157 158 159 160 161 162',
    ...
    '9795 9796 9797 9798 9799 9800 9801 9802', 
    '9803 9804 9805 9806 9807 9808 9809 9810', 
    '9811 9812 9813 9814 9815 9816 9817 9818', 
    '9819 9820'
]