繁体   English   中英

将连续的x值添加到列表

[英]Adding consecutive x values to a list

假设我有一个包含项[123, 124, 125, ... 9820]列表,并且我想从该列表追加到第二个列表,其中每8个项目的字符串之间用空格隔开,直到最后。 例如,列表将具有:

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

在python中执行此操作的最佳方法是什么? 我已经尝试过从123到9820循环的幼稚解决方案,但这会占用过多的运行时间,并且会使我设置的一些简单测试超时。 有什么功能对我有用吗?

将元素收集到长度为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)]

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

演示

  1. 考虑items list ,从1 to 999的数字, Lengthitems list999
  2. 然后使用带有range功能的for loop在项目列表中跳8索引。
  3. 使用字符串的append方法获取最终结果。

码:

>>> items = range(1, 1000)
>>> len(items)
999
>>> output_str = ""
>>> for i in range(0, 999, 8):
...    output_str += " " + str(items[i])
... 
>>> output_str.strip()
'1 9 17 25 33 41 49 57 65 73 81 89 97 105 113 121 129 137 145 153 161 169 177 185 193 201 209 217 225 233 241 249 257 265 273 281 289 297 305 313 321 329 337 345 353 361 369 377 385 393 401 409 417 425 433 441 449 457 465 473 481 489 497 505 513 521 529 537 545 553 561 569 577 585 593 601 609 617 625 633 641 649 657 665 673 681 689 697 705 713 721 729 737 745 753 761 769 777 785 793 801 809 817 825 833 841 849 857 865 873 881 889 897 905 913 921 929 937 945 953 961 969 977 985 993'
>>> 

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

编码:

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'
]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM