繁体   English   中英

如何从我的列表和 python 中的元组中删除空白的引号?

[英]How to remove blank inverted comma from my list and tuple in 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)
  1. 不要将listtupleset或任何保留关键字用作变量名。
  2. 使用values.split(',')而不是values.split() ,您必须传递将用于拆分字符串的分隔符。
  3. 对于排序列表sorted(<your_list>)<your_list>.sort()可以使用-如果你是好奇,想知道它们之间的区别2

最后,您的代码可以最小化为,

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

在调用 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)

你可以简单地这样做:

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

您弄乱了变量名称:您的代码将input()存储到values

然后拆分values并将拆分后的数据存储到list (不要使用内置名称作为变量!)。

然后你做tuple= sorted(values, reverse = False)它使用未拆分(!)原始字符串 - 而不是你刚刚创建的拆分数据。

那是你需要纠正的错误。

本质上,您对未拆分的字符串进行排序,从而为您提供输入的字符排序列表!

在那之后承诺一种类型的拆分 - 通过空格,逗号或其他任何方式并坚持下去。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM