下面是一个列表,n_list
n_list = [2, 4, 4, 5, 2, 1, 7, 1, 9]
问题陈述:
我想从列表解析中得到结果,但输出应该只是值,而不是列表。基本上,不需要为它编写单独的for循环。
简单的解决方案,但不是我想要的:
如果我只需要打印结果,我可以这样做,使用*
:
print(*[val for val in n_list if n_list.count(val) == 1])
本期:
然而,当我将它应用于一个函数时,我得到了错误:
def singleVal(n_list):
return(*[val for val in n_list if n_list.count(val) ==1])
singleVal(n_list)
错误:无法在此处使用启动表达式。
有没有办法在函数中只获取列表解析的值?
预期输出:
最终,应该类似于以下代码,但以函数形式并使用列表解析方法:
result = [val for val in a if a.count(val) ==1]
for i in result:
return I
返回:
int:只出现一次的元素
3条答案
按热度按时间nbewdwxp1#
这里最简单的做法是返回列表,然后使用
*
操作符打印它:如果你非常确定只返回一个值,你可以写一个函数只返回一个值,例如:
请注意,如果
n_list
中有多个唯一值,则上述版本的singleVal
将仅返回第一个唯一值,如果没有唯一值,则将引发StopIteration
。如果你想让你的函数以单个字符串的形式返回列表,你可以使用
join
:请注意,将结果转换为字符串可以很容易地打印出来,但很难做其他事情(您需要使用
split()
和int()
将其转换回数值列表)。如果你想让函数只输出结果而不返回结果,把
print
放在函数内部,不要让它返回任何东西:fd3cxomn2#
x6h2sr283#
您可以使用元组解包,在左侧使用一个元素元组:
如果
result_list
不包含正好一个元素,这将抛出一个错误:ValueError: too many values to unpack (expected 1)
,如果有多个元素,或者ValueError: not enough values to unpack (expected 1, got 0)
,如果列表为空。