列表中项目的条件子字符串(Python)

列表中项目的条件子字符串(Python),python,substring,Python,Substring,我有两张清单。第一个是我的数据列表,第二个是随机生成的数字列表: alist = ['ABCDEF', 'GHIJKL', 'MNOPQR', 'STUVWX'] blist = [2,0,3,1] 我想根据blist中的值从列表中的每个项目中提取3个字符作为子字符串 我期望的结果: ['CDE', 'GHI', 'PQR', 'TUV'] 如何根据不同列表中描述的起始模体位置从一个列表中生成X个字符的子字符串 编辑: 下面的函数实现了我想要的结果,但是有更好的方法来完成这个任务吗 x =

我有两张清单。第一个是我的数据列表,第二个是随机生成的数字列表:

alist = ['ABCDEF', 'GHIJKL', 'MNOPQR', 'STUVWX']
blist = [2,0,3,1]
我想根据blist中的值从列表中的每个项目中提取3个字符作为子字符串

我期望的结果:

['CDE', 'GHI', 'PQR', 'TUV']
如何根据不同列表中描述的起始模体位置从一个列表中生成X个字符的子字符串

编辑:

下面的函数实现了我想要的结果,但是有更好的方法来完成这个任务吗

x = -1
clist = []
for i in alist:
    tracker = 1
    x = x + tracker
    substring = i[blist[x]:blist[x]+3]
    clist.append(substring)
以下是一个解决方案:

output = []
for x in range(len(alist)):
    index = blist[x]
    output.append(alist[x][index:index+3])
该程序的工作原理:

首先,它在循环中运行一段时间。 要分析的索引位置是blist的x值。
最后,将列表中索引位置的前三个字符附加到输出列表。

您可以定义一个函数来完成此操作,并使用内置枚举

alist=['ABCDEF','GHIJKL','MNOPQR','STUVXX'] blist=[2,0,3,1] def子字符串选择器列表a,列表b: 首先创建一个空列表 结果=[] 然后绕过去 对于i,枚举列表中的元素: 仅拾取具有至少3个字符的元素 如果lenalist[i]>=3: 将找到的字符追加到结果列表 结果.附录a[i][list_b[i]:list_b[i]+3] 返回结果 结果=子字符串\u选择器列表,blist 打印结果
使用zip将每个“计数”与要缩短的项目链接,然后使用索引运算符选择和修剪字符串的短列表:

 [x[0][x[1]:][:3] for x in zip(alist, blist)]

这是家庭作业吗?您尝试过什么?列表是可编辑的:对于x,列表中的x是x i RangeList的一个更简单的替代。这是事实,但使用此方法,x是一个从0开始的数字。这样,您就可以使用索引轻松访问blist。