如何将列表列表中的所有字符串转换为整数?[重复]

2024-12-19 09:23:00
admin
原创
133
摘要:问题描述:我有一个包含字符串的元组的元组:T1 = (('13', '17', '18', '21', '32'), ('07', '11', '13', '14', '28'), ('01', '05', '06', '08', '15', '16')) 我想将所有字符串元素转换为整...

问题描述:

我有一个包含字符串的元组的元组:

T1 = (('13', '17', '18', '21', '32'),
      ('07', '11', '13', '14', '28'),
      ('01', '05', '06', '08', '15', '16'))

我想将所有字符串元素转换为整数,然后将它们放回列表列表中:

T2 = [[13, 17, 18, 21, 32],
      [7, 11, 13, 14, 28],
      [1, 5, 6, 8, 15, 16]]

解决方案 1:

int()是 Python 标准内置函数,用于将字符串转换为整数值。您可以使用包含数字的字符串作为参数来调用它,它会返回转换为整数的数字:

>>> int("1") + 1
2

如果你知道列表 T1 的结构(它仅包含列表,只有一个级别),你可以在 Python 3 中执行以下操作:

T2 = [list(map(int, x)) for x in T1]

在 Python 2 中:

T2 = [map(int, x) for x in T1]

解决方案 2:

您可以使用列表推导来做到这一点:

T2 = [[int(column) for column in row] for row in T1]

内部列表推导 ( )从 中的一系列-able 对象(如十进制字符串)[int(column) for column in row]构建lists 。外部列表推导 ( ) 构建一个列表,其中包含对 中的每个项目应用内部列表推导的结果。int`introw[... for row in T1])`T1

如果任何行包含无法通过 转换的对象,则代码片段将失败int。如果要处理包含非十进制字符串的行,则需要一个更智能的函数。

如果您知道行的结构,则可以用对行函数的调用替换内部列表理解。例如。

T2 = [parse_a_row_of_T1(row) for row in T1]

解决方案 3:

仅使用列表推导:

[[int(y) for y in x] for x in T1]

解决方案 4:

不要放入int( ),而是放入 ,float( )这样您就可以将小数和整数一起使用。

解决方案 5:

我同意到目前为止每个人的回答,但问题是,如果你没有所有的整数,它们就会崩溃。

如果你想排除非整数,那么

T1 = (('13', '17', '18', '21', '32'),
      ('07', '11', '13', '14', '28'),
      ('01', '05', '06', '08', '15', '16'))
new_list = list(list(int(a) for a in b) for b in T1 if a.isdigit())

这只会产生实际数字。我不使用直接列表推导的原因是列表推导会泄露其内部变量。

解决方案 6:

T3=[]

for i in range(0,len(T1)):
    T3.append([])
    for j in range(0,len(T1[i])):
        b=int(T1[i][j])
        T3[i].append(b)

print T3

解决方案 7:

尝试一下。

x = "1"

x 是一个字符串,因为它两边有引号,但里面有一个数字。

x = int(x)

由于 x 中包含数字 1,因此我可以将其转换为整数。

要查看字符串是否是数字,您可以这样做。

def is_number(var):
    try:
        if var == int(var):
            return True
    except Exception:
        return False

x = "1"

y = "test"

x_test = is_number(x)

print(x_test)

它应该打印为 IDLE True 因为 x 是一个数字。

y_test = is_number(y)

print(y_test)

它应该打印到 IDLE False,因为 y 不是数字。

解决方案 8:

使用列表推导:

t2 = [map(int, list(l)) for l in t1]

解决方案 9:

参见这个函数

def parse_int(s):
    try:
        res = int(eval(str(s)))
        if type(res) == int:
            return res
    except:
        return

然后

val = parse_int('10')  # Return 10
val = parse_int('0')  # Return 0
val = parse_int('10.5')  # Return 10
val = parse_int('0.0')  # Return 0
val = parse_int('Ten')  # Return None

您还可以查看

if val == None:  # True if input value can not be converted
    pass  # Note: Don't use 'if not val:'

解决方案 10:

Python 2 的另一个实用解决方案:

from functools import partial

map(partial(map, int), T1)

但是 Python 3 会稍微有点混乱:

list(map(list, map(partial(map, int), T1)))

我们可以用包装器解决这个问题

def oldmap(f, iterable):
    return list(map(f, iterable))

oldmap(partial(oldmap, int), T1)

解决方案 11:

如果它只是元组的元组,那么类似的东西rows=[map(int, row) for row in rows]就可以解决问题。(其中有一个列表理解和一个​​对 map(f, lst) 的调用,它等于 [f(a) for a in lst]。)

如果出于某种原因您的数据库中存在类似内容,则Eval不是__import__("os").unlink("importantsystemfile")您想要执行的操作。始终验证您的输入(如果没有其他操作,如果您的输入不正确,则会引发 int() 异常)。

解决方案 12:

在 Python 3.5.1 中,类似下面的操作可以工作:

c = input('Enter number:')
print (int(float(c)))
print (round(float(c)))

Enter number:  4.7
4
5

解决方案 13:

Python 内置了函数 int(string) 和可选参数 base。

如果字符串包含整数值,它会将其转换为相应的整数值。但是,如果字符串中包含十进制数,则需要使用 float() 进行转换。

用法:

a = '22'
b = int(a)

if a = '22.22'
b = int(a) '''will give error, invalid literal for int().'''
b = float(a) '''will convert the string.'''

解决方案 14:

你可以做这样的事情:

T1 = (('13', '17', '18', '21', '32'),  
     ('07', '11', '13', '14', '28'),  
     ('01', '05', '06', '08', '15', '16'))  
new_list = list(list(int(a) for a in b if a.isdigit()) for b in T1)  
print(new_list)  
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1565  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1354  
  信创国产芯片作为信息技术创新的核心领域,对于推动国家自主可控生态建设具有至关重要的意义。在全球科技竞争日益激烈的背景下,实现信息技术的自主可控,摆脱对国外技术的依赖,已成为保障国家信息安全和产业可持续发展的关键。国产芯片作为信创产业的基石,其发展水平直接影响着整个信创生态的构建与完善。通过不断提升国产芯片的技术实力、产...
国产信创系统   21  
  信创生态建设旨在实现信息技术领域的自主创新和安全可控,涵盖了从硬件到软件的全产业链。随着数字化转型的加速,信创生态建设的重要性日益凸显,它不仅关乎国家的信息安全,更是推动产业升级和经济高质量发展的关键力量。然而,在推进信创生态建设的过程中,面临着诸多复杂且严峻的挑战,需要深入剖析并寻找切实可行的解决方案。技术创新难题技...
信创操作系统   27  
  信创产业作为国家信息技术创新发展的重要领域,对于保障国家信息安全、推动产业升级具有关键意义。而国产芯片作为信创产业的核心基石,其研发进展备受关注。在信创国产芯片的研发征程中,面临着诸多复杂且艰巨的难点,这些难点犹如一道道关卡,阻碍着国产芯片的快速发展。然而,科研人员和相关企业并未退缩,积极探索并提出了一系列切实可行的解...
国产化替代产品目录   28  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用