python-将2位数字的字符串列表转换为2位整数的列表

时间:2018-12-05 15:50:39

标签: python python-3.x function

我有一个由2个数字组成的字符串列表, 我正在尝试编写一个函数,将其转换为2位整数的列表,而不使用int()或不知道列表的长度,这是到目前为止的代码:

intslist = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
            19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
            36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
            53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
            70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
            87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]

numslist = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12',
            '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23',
            '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34',
            '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45',
            '46', '47', '48', '49', '50', '51', '52', '53', '54', '55', '56',
            '57', '58', '59', '60', '61', '62', '63', '64', '65', '66', '67',
            '68', '69', '70', '71', '72', '73', '74', '75', '76', '77', '78',
            '79', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89',
            '90', '91', '92', '93', '94', '95', '96', '97', '98', '99']

def convert_num(numlist,list1,list2):
    returnlist = []
    templist = []
    convertdict = {k:v for k,v in zip(list1,list2)}
    p = 0
    num = ''.join(numlist)
    for c in num:
        templist.append(convertdict[num[p]])
        p += 2
    for i in templist:
    if templist[i] % 2 == 0:
        returnlist.append()
    return returnlist

这有效,但仅返回单个数字的列表,而不是我想要的2个数字。

我只是一个初学者,真的不知道如何进行。 任何帮助表示赞赏!

3 个答案:

答案 0 :(得分:1)

整数是整数。 “两位数整数”作为概念不存在。

不使用intlen,要从字符串返回整数,您可以反转字符串,使用ord而不是int,乘以10 k 并求和:

x = '84'

res = sum((ord(val)-48)*10**idx for idx, val in enumerate(reversed(x)))  # 84

您可以使用map将逻辑应用于列表中的每个字符串:

def str_to_int(x):
    return sum((ord(val)-48)*10**idx for idx, val in enumerate(reversed(x)))

res = list(map(str_to_int, numslist))

print(res)

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
 ...
 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]

答案 1 :(得分:0)

解决方案的核心是获取字符串并将其转换为整数:

def str_to_int(number):
    return sum((ord(c) - 48) * (10 ** i) for i, c in enumerate(number[::-1]))

此方法将您的数字输入,从末尾开始枚举,然后将每个字符的ASCII值转换为数字表示形式,然后确保它将在整个数字中占据适当的数字。

从那里,您可以使用map来转换整个列表:

intsList = list(map(str_to_int, numsList))

答案 2 :(得分:0)

非常简单的解决方案:

dd={ str(i):i for i in range(10) } # {"0":0,"1":1,..."9":9}
rslt=[]
for ns in numslist: 
        n=0 
        for i in range(len(ns)): 
            n=10*n+dd[ns[i]] 
        rslt.append(n)