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

2024-09-30 03:22:36 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

我只是个初学者,不知道该怎么做。 感谢任何帮助!!在


Tags: 函数字符串in列表for数字numint
3条回答

整数就是整数。”“两位数整数”不是一个概念。在

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

x = '84'

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

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

^{pr2}$

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

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

此方法接受您的数字,从末尾枚举,然后将每个字符的ASCII值转换为其数字表示形式,然后确保它将占据整个数字中的正确数字。在

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

^{pr2}$

非常简单的解决方案:

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)

相关问题 更多 >

    热门问题