【问题标题】:Adding string values together that are elements in a list将作为列表中元素的字符串值相加
【发布时间】:2021-06-01 04:54:57
【问题描述】:

我将如何进行以下操作?我需要将各个元素中的数字相加,并将总数分配给一个新变量。我已经尝试了好几天没有太多运气。我不确定是否必须先从字母中拆分数字?

列表 = ['2H','4B']

任何帮助将不胜感激。

编辑:

感谢大家的回复。我不知道为什么我做不到这一点,它似乎应该如此简单。

我会给你们更多的信息。

下面的列表代表扑克牌,第一个数字或字母是面值,即:2 或 3,但也可以是代表国王的“K”,其值将是 10。第二部分是卡片套装,即。 C 代表俱乐部或 H 代表红心。我需要将这两张牌的面值相加,得到手牌总数。更准确的列表可能如下所示。

list1 = ['KH', '10C']

【问题讨论】:

标签: python string list element add


【解决方案1】:

这有帮助吗?无论它们元素中的数字位置如何,它都会有所帮助。

list1 = ['2H','4B']
list1=[word for x in list1 for word in x] #== Split the elements
print(list1)
new_var=0
for value in list1:
    try:
        value=int(value) #=== Convert to int
        new_var+=value #== Add value
    except ValueError:
        pass
print(new_var)

【讨论】:

【解决方案2】:

一种方法,使用列表推导和re.findall 从每个列表条目中提取前导数字:

list = ['2H','4B']
nums = [int(re.findall(r'^\d+', x)[0]) for x in list]  # [2, 4]
output = sum(nums)  # 6

【讨论】:

    【解决方案3】:

    你应该避免使用函数名作为变量名,即 list =

    有几种方法可以做到这一点,我建议您查看有关切片和索引字符串的 Python 文档。

    l = ['2H','4B']
    
    result = sum(int(x[0]) for x in l)
    print(result)
    

    result 等于列表中每个元素的第一个字符的总和。我已将每个索引元素零转换为整数以允许添加。

    你也可以这样做:

    result = 0
    for x in l:
        result += int(x[0])
    print(result)
    

    【讨论】:

    • 这假设每个字符串值总是只有一个前导数字字符(也许是真的,但 OP 没有提到这一点)。
    【解决方案4】:

    您可以从每个字符串中提取数字然后添加它们

    你可以使用

    total = 0
    list = ['2H','4B']
        
    for element in list:
        res = [int(i) for i in element.split() if i.isdigit()]
        total += sum(res)
    
    print(total)
    

    【讨论】:

    • 感谢您的回复。如果列表如下:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-15
    • 1970-01-01
    • 2011-01-08
    • 2013-07-05
    • 2020-03-08
    • 1970-01-01
    • 2015-05-22
    相关资源
    最近更新 更多