首页 > 解决方案 > 创建具有重复结构的字符串

问题描述

我正在尝试使用以下输出创建一个字符串:

1: (a, b),
2: (b, c), 
3: (c, d), 
4: (d, e), 
5: (e, f), 
...

字母是数字的地方。

我希望能够控制几个因素:

根据之前的反馈,我有以下代码:

final_lst = []
for x in range(2390, 2640, 50):     # start, end, what it counts by 
    final_lst.append([x, x+50])
print(final_lst)

for i in range(1, 5):   # bin ranges 
    print('%s: (%s,%s),'%(i, x*1, (x+50)))

感谢任何帮助!

标签: python

解决方案


你有三个参数:

  1. 行数N
  2. 起始编号START
  3. 间隔大小DELTA

您基本上可以使用您现在拥有的代码,但将某些值替换为您的参数。

from itertools import islice, count


START = 2390
DELTA = 50
N = 5

for i, x in islice(enumerate(count(START, DELTA), start=1), N):
   print(f'{i}: ({x}, {x + DELTA})')
  • count(START, DELTA)产生一个无限序列的值START, START + DELTA, START + 2*DELTA, ...
  • enumerate将每个元素与数字 1、2、3 等配对。
  • islice仅产生其迭代器参数的第一个N元素

理想情况下,您不必DELTA在两个地方重复使用。您可以使用itertools.teeand zip,但我不认为这是一个显着的改进。没有“内联”方式可以提前stop准备好与start.

start, stop = tee(count(START, DELTA))
next(stop)

for i, (x, y) in islice(enumerate(zip(start, stop), start=1), N):
    print(f'{i}: ({x}, {y})')

推荐阅读