如何在一行代码中 "push" 一个元组?
How to "push" a tuple in one line of code?
为什么我不能替换下面的第一个代码:
def conversion7(x,k):
l=list(x)
l.append(k)
return tuple(l)
t=(1,2,3,4)
print(conversion7(t,7))
与第二个:
def conversion7(x,k):
return tuple(list(x).append(k))
t=(1,2,3,4)
print(conversion7(t,7))
第一个代码有效。这是第二个代码的编译器输出:
Traceback (most recent call last):
File "<string>", line 5, in <module>
File "<string>", line 2, in conversion7
TypeError: 'NoneType' object is not iterable
>
代码的目的是通过将元组转换为列表来推送元组,推送列表然后将其转换回元组。
由于 append 没有 return 对列表的引用,正如 chepner 指出的那样,您可以执行以下操作:
def conversion7(x,k):
return tuple(list(x) + [k])
或者跳过列表转换并立即添加元组:
def conversion7(x,k):
return x + (k,)
为什么我不能替换下面的第一个代码:
def conversion7(x,k):
l=list(x)
l.append(k)
return tuple(l)
t=(1,2,3,4)
print(conversion7(t,7))
与第二个:
def conversion7(x,k):
return tuple(list(x).append(k))
t=(1,2,3,4)
print(conversion7(t,7))
第一个代码有效。这是第二个代码的编译器输出:
Traceback (most recent call last):
File "<string>", line 5, in <module>
File "<string>", line 2, in conversion7
TypeError: 'NoneType' object is not iterable
>
代码的目的是通过将元组转换为列表来推送元组,推送列表然后将其转换回元组。
由于 append 没有 return 对列表的引用,正如 chepner 指出的那样,您可以执行以下操作:
def conversion7(x,k):
return tuple(list(x) + [k])
或者跳过列表转换并立即添加元组:
def conversion7(x,k):
return x + (k,)