我有一个函数并返回三个值,我的函数的返回值是
(1, 3, "<class 'int'>")
我想要回归
(1, 3, <class 'int'>)
如何从return value.str(type(element))
中删除引号是返回第3个值的值
def is_list_permutation(L1, L2):
L1set = set(L1)
L2set = set(L2)
count = 0
element = ''
if L1 == [] and L2 == []:
return(None,None,None)
elif len(L1) == len(L2) and L1set == L2set:
for a in L1:
if L1.count(a) == L2.count(a):
if L1.count(a) > count:
count = L1.count(a)
element = a
return(element,count,str(type(element)))
else:
return False
break
else:
return False
所以如果我给
L1 = [1, 'b', 1, 'c', 'c', 1]
L2 = ['c', 1, 'b', 1, 1, 'c']
然后结果是(1, 3, "<class 'int'>")
,而我想要(1, 3, <class 'int'>)
答案 0 :(得分:1)
它周围总会有一些引号,因为它是一个字符串!
如果您想在字符串None
时返回""
,那么您可以这样做:
x = str(type(s))
return(element, count, x if x else None)
答案 1 :(得分:1)
您的函数返回一个包含三个元素的元组:element
,count
和element
类型的字符串表示形式。在任何情况下,这都有你在那里看到的任何字符串表示。你只需要取回一个元组。
现在,当你打印那个元组时,print函数实际上会尝试将其转换为字符串。对于元组,此字符串表示被定义为一组括号()
,以及内部每个元组元素的repr()
字符串表示。
对于数字,这看起来很好,因为repr(5)
恰好是字符串'5'
。但对于字符串,repr将添加引号以确保返回字符串是有效的Python代码:
>>> repr('foo')
"'foo'"
>>> print(repr('foo'))
'foo'
现在,当你说,你想要没有这些引号的结果时,你必须考虑实际意味着什么。您可以自己轻松格式化结果字符串。例如:
return '({0}, {1}, {2})'.format(element, count, str(type(element)))
这将返回一个字符串,它看起来就像你想要的那样。
然而,通过这样做,您也会丢失返回元组时的信息。现在,您只返回一个没有关于实际源值的信息的字符串。因此,如果不再解析字符串,则无法取出count
值。
所以,想想你想做什么:你真的只想要一些好的打印,或者你真的想要将这三个值单独作为返回值,以便能够在之后的其他内容中使用它们吗? / p>
如果您已将返回值作为元组,则可以考虑稍后以所需格式打印文本...
顺便说一句:请注意,当不调用str(type(element))
而只调用type(element)
时,您将获得一个类型元素(而不是字符串)。并且类型元素的repr()
恰好是您想要的。因此,作为快速解决方案,您可以随时摆脱那里的str()
电话。