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

2024-05-28 22:42:59 发布

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

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

alist = ['ABCDEF', 'GHIJKL', 'MNOPQR', 'STUVWX']
blist = [2,0,3,1]

我想根据blist中的值,从alist中的每个项目中提取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)

Tags: 数据项目列表数字substringtracker子串个字符
3条回答

以下是一个解决方案:

output = []
for x in range(len(alist)):
    index = blist[x]
    output.append(alist[x][index:index+3])

该程序的工作原理:

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

您可以定义一个函数来执行此操作,并使用内置的enumerate()


alist = ['ABCDEF', 'GHIJKL', 'MNOPQR', 'STUVWX']
blist = [2, 0, 3, 1]


def substring_picker(list_a, list_b):
    # first create an empty list
    results = []

    # then loop over alist
    for i, element in enumerate(alist):
        # only pick elements with at least 3 chars
        if len(alist[i]) >= 3:
            # append the found chars to results list
            results.append(list_a[i][list_b[i]:list_b[i] + 3])

    return results


result = substring_picker(alist, blist)
print(result)

短列表理解,使用zip将每个“计数”与要缩短的项链接,然后使用索引运算符选择和修剪字符串:

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

相关问题 更多 >

    热门问题