【问题标题】:Sumproduct of specific list elements in a list列表中特定列表元素的 Sumproduct
【发布时间】:2020-01-16 17:54:11
【问题描述】:

我有一个字符串,其中包括大写字符和子字符串,它们是括号中的整数形式(例如:(1))。

示例字符串:

in_str = '(3)(3)ABC(2)XY(5)PQRSTX(9)(2)TWO(7)SEVEN'

我已将子字符串提取到一个嵌套列表中,其中每个子列表包含整数以及它与下一个子字符串之间的大写字符的长度。

示例列表:

in_lst = [[3, 0], [3, 3], [2, 2], [5, 6], [9, 0], [2, 3], [7, 5]]

我想将子列表乘以它们的第一个元素,这些元素是直接连接的(在字符串中它们之间没有大写字符串),并将使用过的子列表替换为空的(任务需要它) ),除了每个部分一个,它包含给定部分的最终 sumproduct。

所需输出示例:

out_lst = [[], [9, 3], [2, 2], [5, 6], [], [18, 3], [7, 5]]

字符串中的示例输出列表:

out_str = '(9)ABC(2)XY(5)PQRSTX(18)TWO(7)SEVEN'

不幸的是,就正确的方法而言,我有点迷失了这一点,所以我无法生成一个代码,它至少返回一个近似的输出列表,所以任何关于它的帮助或提示都不止欢迎!

【问题讨论】:

  • I have extracted the sub-strings to a nested list,如果可能,请发布您的代码。

标签: python list sumproduct


【解决方案1】:

您可以使用re.findall 查找数字和后面的字母,然后遍历它们并转换为所需的形式

import re
split_lst = re.findall(r'\((\d)\)([A-Z]*)', in_str)
print (split_lst)
#[('3', ''), ('3', 'ABC'), ('2', 'XY'), ('5', 'PQRSTX'), ('9', ''), ('2', 'TWO'), ('7', 'SEVEN')]

out_str = ''.join(e for (n,s) in split_lst for e in (('(%s)' % (int(n)*len(s))), s) if s)
print (out_str)
#'(9)ABC(4)XY(30)PQRSTX(6)TWO(35)SEVEN'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-16
    • 2021-09-25
    • 1970-01-01
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    • 2022-10-14
    相关资源
    最近更新 更多