Python中的不同输出

2024-06-16 10:01:28 发布

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

我想删除字符串(“324a”包括在内),并在列表中只保留整数。这是代码

a = ["345", "sadas", "324a", "14", "john"]
    

for i in a:
    try:
        if i == int(i):
            continue
    except ValueError:
        a.remove(i)
print(a)

使用此代码,输出为

['345', '324a', '14']

即使“324a”不是整数,并且代码应该返回ValueError,但代码仍然不会将其从列表中删除


下面是另一个简单代码,显示“324a”不是整数

a = "324a"
a = int(a)
print(a)

上述代码的输出

a = int(a)
ValueError: invalid literal for int() with base 10: '324a'

提前感谢您的回答


Tags: 字符串代码in列表forif整数john
3条回答
mixed_array = ["345", "sadas", "324a", "14", "john"]
only_integers= [] 

# A method to check if an object is integer
def is_int(s):
    try: 
        int(s)
    except ValueError:
        return False
    else:
        return True

# Add integer objects from mixed_array to only_integers like:
only_integers = [i for i in mixed_array if is_int(i)]

# OR like:

only_integers = list(filter(is_int, mixed_array ))

您可以使用如下简单的列表理解:

a = [word for word in a if word.isdigit()]

这将创建一个包含所有数字的列表

这与您在遍历列表时对列表进行变异有关

查看下面的代码并查看打印的索引…您删除了索引1处的sadas,现在将324a保留在索引1处,但循环无法识别值更改,因此在迭代过程中不会重复索引1两次

for idx, i in enumerate(a):
    print(idx)
    try:
        if i == int(i):
            continue
    except ValueError:
        a.remove(i)
print(a)

试试-

a = ["345", "sadas", "324a", "14", "john"]
b = []
for i in a:
    try:
        int(i)
        b.append(i)
    except ValueError:
        continue
print(b)

相关问题 更多 >