簡體   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