在Python中比较和组合列表项

时间:2015-12-19 00:52:21

标签: python regex list

我正在处理Advent of Code: Day 2,我无法使用列表。我的代码采用一个字符串,例如2x3x4,并将其拆分为一个列表。然后它检查列表中的“x”并删除它们并将值提供给计算所需区域的方法。问题是在删除'x'之前我需要找出'x'之前是否有两个数字并将它们组合起来,以便考虑两位数字。我看过正则表达式,但我认为我没有正确使用它。有什么想法吗?

def CalcAreaBox(l, w, h):
    totalArea = (2*(l*w)) + (2*(w*h))+ (2*(h*l))
    extra = l * w
    toOrder = totalArea + extra
    print(toOrder)

def ProcessString(dimStr):

    #seperate chars into a list
    dimStrList = list(dimStr)
    #How to deal with double digit nums?

    #remove any x
    for i in dimStrList:
        if i == 'x':
            dimStrList.remove(i)
    #Feed the list to CalcAreaBox
    CalcAreaBox(int(dimStrList[0]), int(dimStrList[1]), int(dimStrList[2]))

dimStr = "2x3x4"  
ProcessString(dimStr)

2 个答案:

答案 0 :(得分:1)

您可以在字符串上使用拆分

#remove any x and put in list of ints
dims = [int(dim) for dim in dimStrList.split('x')]
#Feed the list to CalcAreaBox
CalcAreaBox(dims[0], dims[1], dims[2])

当然,您需要考虑处理字符串中没有两个X的情况

答案 1 :(得分:0)

您的问题更有可能适合代码审核而非Stack Overflow。

由于你的任务是一个小挑战,我不会告诉你一个确切的解决方案,但是给你一个关于Python字符串的split方法的提示(参见documentation)。

此外,您应该根据PEP8中的建议检查代码的样式,例如Python通常具有全部小写字母的函数/变量名,由下划线分隔的单词(如calc_area_box)。