如何将列表列表转换为整数?

时间:2015-11-28 18:50:58

标签: python list foreach casting integer

我不理解Python中的基本概念(C家伙)并且可以使用a)答案b)解释

def do_the_deed(srctxt, upperlower)
# srctxt = "XGID=-b----E-C---eE---c-e----B-:0:0:1:21:0:0:1:0:10"

    alpha_list = srctxt[5:31]

    # map chars to ascii
    # [45],[66],[45],[45]....
    ord_list = [map(ord, x) for x in alpha_list]

    count = 0
    # what I want to do but can not!!!
    ??? for y = int(x) in ord_list  ???
        if y <> 45                    # acs('-') == 45
            if upperlower = 'UPPER'
                if ((y>= 97) and (y<= 112)):  # uppercase 15 valid
                    count += y - 96
            if upperlower = 'LOWER'
                if ((y>=65) and (y<=80)):     # lower case 15 valid
                    count += y - 64
     return count

我认为这样做有一个整洁的方式

xval = [int(x) for x in ord_list[0]]

给了我第一个价值。

我可以明确地迭代0到26的范围,但这似乎是错误的想法。我一直在谷歌搜索,但我不知道正确的搜索条件。 Iterator,Enumerate,Cast ... C类术语并没有给我正确答案。

谢谢, 罗伯特

2 个答案:

答案 0 :(得分:1)

你的问题来自这一行:

ord_list = [map(ord, x) for x in alpha_list]

您正在制作两次列表,一次列出清单([ ... for x in ...]),另一次列出map。所以当你(我假设)你只想要一个整数列表时,你会得到一个字符代码列表:

  • 目前您:ord_list[[45], [98], [45], ..., [66], [45]]
  • 您需要的是:ord_list[45, 98, 45, ..., 66, 45]

您可以使用map(ord, alpha_list)[ord(x) for x in alpha_list]

来获取它

所以你的代码可能就像:

...
alpha_list = srctxt[5:31]

# map chars to ascii
# [45],[66],[45],[45]....
ord_list = map(ord, alpha_list)  # or [ord(x) for x in alpha_list]

count = 0
# what I want to do but can not!!! now you can :-)
for y in ord_list:
    if y <> 45:
        ...

答案 1 :(得分:0)

在Python中,您经常要使用词典:

import string
def do_the_deed(srctxt, upperlower):
    chars = string.lowercase if upperlower == 'LOWER' else string.uppercase
    translate = dict(zip(chars, range(1,27)))
    return sum(translate.get(c, 0) for c in srctxt[5:31])