首页 > 解决方案 > 如何从我的列表和python中的元组中删除空白引号?

问题描述

我是一个新的python开发人员。如果你能帮我解决这个问题,我会很高兴的。问题是我做了一个列表和元组。用户必须键入一些逗号分隔的数字。所以我期待这个结果:

List :  ['3', '4', '2', '3', '5']
Tuple : ('3', '4', '2', '3', '5')

并且数字应该按升序显示。它通过下面的代码工作,但显示了一些额外的反逗号,所以如何删除那些空白逗号。

输入一些逗号分隔的数字:4 4 5 6 2 3 1

List  :  [' ', ' ', ' ', ' ', ' ', ' ', '1', '2', '3', '4', '4', '5', '6']      
Tuple :  [' ', ' ', ' ', ' ', ' ', ' ', '1', '2', '3', '4', '4', '5', '6'] 

这是我用来按升序排列列表和元组的代码。另一件事是当我在输入中给出 int() 方法时,用户只能输入数字,而不是任何字符串。它显示一个错误,那么如何做到这一点?

values = input("Type some comma separated numbers: ")
list = values.split()
tuple = tuple(list)
tuple= sorted(values, reverse = False)
list= sorted(values, reverse = False)
print('List  : ', list)
print('Tuple : ', tuple)

标签: python

解决方案


调用 input() 时不能使用 int() ,因为通过用空格分隔数字,您正在创建一个字符串,其中的数字与 base10 数字不相似,因此会出现 ValueError 。

例如:

values = '4 4 5 6 2 3 1'
int(values)
ValueError: invalid literal for int() with base 10: '4 4 5 6 2 3 1'

然而:

values = '4456231'
int(values)
4456231

正如@Corralien 所提到的,您不能使用内置的保留关键字,如 list 和 tuple (除非您先删除它们的命名空间,但这会使事情变得不必要地复杂)。不要用空格分隔关键字的 = 符号也被认为是一种很好的语法。为了得到你需要的东西,你可以这样做:

values = input("Type some comma separated numbers: ")
l = sorted(values.split(), reverse=False)
t = sorted(tuple(l), reverse=False)
print('List  : ', l)
print('Tuple : ', t)

但这不会让您将值作为整数,在这种情况下,最好的方法是进行列表理解。我们使用它在列表 l 的值之间进行迭代,并将它们转换为列表 n 中的 int。

values = input("Type some comma separated numbers: ")
l = sorted(values.split(), reverse=False)
n = [int(x) for x in l]
t = sorted(tuple(n), reverse=False)
print('List  : ', n)
print('Tuple : ', t)

但是,您要求用户输入以逗号分隔的值,而不是空格。因此,大多数用户宁愿4,4,5,6,2,3,1输入4 4 5 6 2 3 1. 在这种情况下,您需要调整您的代码,使其看起来更像这样:

values = input("Type some comma separated numbers: ")
l = sorted(values.split(','), reverse=False)
n = [int(x) for x in l]
t = sorted(tuple(n), reverse=False)
print('List  : ', n)
print('Tuple : ', t)

推荐阅读