在python中生成一个数字序列和交替字符串

2024-10-03 23:28:35 发布

您现在位置:Python中文网/ 问答频道 /正文

瞄准

我想在python中生成一个序列list,例如:

['s1a', 's1b', 's2a', 's2b', ..., 's10a', 's10b']

属性:

  • 项目包含一个前缀
  • 数字按数字排序
  • 后缀在每个数字上是交替的

方法

为此,我应用了以下代码,使用xrange和综合列表方法:

^{pr2}$

问题

是否有更简单的语法来获得结果,例如使用itertools? 类似于this问题?在


Tags: 项目方法代码属性排序序列数字后缀
3条回答

双倍的列表理解可以实现以下目的:

['s'+str(x)+y for x in range(1,11) for y in 'ab']

itertools.product可能是你的朋友:

all_combos = ["".join(map(str, x)) for x in itertools.product(p, n, s)]

退货:

^{pr2}$

编辑:作为一条直线:

all_combos = ["".join(map(str,x)) for x in itertools.product(['s'], range(1, 11), ['a', 'b'])]

编辑2:正如James的回答中所指出的,我们可以将product调用中列出的字符串元素更改为仅字符串,itertools仍然可以迭代它们,从每个字符串中选择字符:

all_combos = ["".join(map(str,x)) for x in itertools.product('s', range(1, 11), 'ab')]

怎么样:

def func(prefix,suffixes,size):
    k = len(suffixes)
    return [prefix+str(n/k+1)+suffixes[n%k] for n in range(size*k)]

# usage example:
print func('s',['a','b'],10)

这样你就可以随意替换后缀了。在

当然,每个后缀都可以是任意长的。在

相关问题 更多 >