python - 创建具有重复结构的字符串
问题描述
我正在尝试使用以下输出创建一个字符串:
1: (a, b),
2: (b, c),
3: (c, d),
4: (d, e),
5: (e, f),
...
字母是数字的地方。
我希望能够控制几个因素:
起始值“a”
行数。有时我需要 5 行,有时需要 20+
值增加的增量(a 到 b 和 b 到 c 将增加相同的量,但我希望以后可以灵活地更改增量值)。
根据之前的反馈,我有以下代码:
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)))
感谢任何帮助!
解决方案
你有三个参数:
- 行数
N
- 起始编号
START
- 间隔大小
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.tee
and 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})')
推荐阅读
- xml - XSLT 转义 HTML 实体代码 (< >)
- spacy - 将训练数据从 Spacy 2.0 转换为 3.0 时出现意外的关键字参数“alignment_mode”
- javascript - 如何在单击的按钮之间切换
- flutter - 将静态库添加到 iOS
- php - 如何在数据列表的“选项”字段中获取数组值
- azure - 将 Azure 应用程序洞察中的 LOGMESSAGE 事件记录到 NewRelic
- javascript - 使用 JS 在下拉列表中按 2 个自定义分类法过滤 WordPress 帖子
- windows - 当用户在资源管理器中打开文档时,是否可以使用挂钩机制?
- javascript - 如何获取数组中的重复元素
- java - Android:ImageView 的宽度不会从 SeekBar 侦听器更改