除非只有一个项目,否则我必须编写一个代码来切换元组中的第一个项目。我在元组中理解这是不可能完成的,但它可以在列表中完成。所以在我的代码中,我将元组更改为列表。 在运行代码后,它应该如下所示:
>>>switchItems((6,4,8,3,7,9,4))
(4,4,8,3,7,9,6)
>>>switchItems((“hi” , 23))
(23, “hi”)
>>>switchItems((89,))
(89,)
我的代码不会这样做。它返回一个列表,我真的不知道如何使它正常工作,这是我的代码:
switchItems(tuple):
new = list(tuple)
return new[-1],new [1:-2],new[0]
然后它返回:
>>>switchItems((6,4,8,3,7,9,4))
(4, [4, 8, 3, 7], 6)'
答案 0 :(得分:4)
这是修复代码的一种方法。
def switchItems(tup):
if len(tup) > 1:
new = list(tup)
new[0], new[-1] = new[-1], new[0]
return tuple(new)
return tup
长度检查有助于避免可能的错误和针tuple
到list
到tuple
转换。
现在,让我们谈谈你的问题。
未正确定义函数switchItems。在Python中,您应该使用def
(或lambda
)来定义函数,但我确信这是复制粘贴的工件。
您不应该使用隐藏内置名称的参数名称,即不要使用tuple
作为参数名称。
根据PEP8,您应该避免使用CamelCase来命名Python中的函数,例如: switchItems
应为switch_items
。这不是强制执行,但非常感谢。
答案 1 :(得分:4)
长度无关紧要,您只需要交换第一个和最后一个元素:
def switch_items(t): # use lowercase and underscores for function names
t = list(t)
t[0],t[-1] = t[-1],t[0]
return tuple(t)
你可能想要抓住一个空元组:
或切片并检查len:
def switch_items(t):
return t[-1:] + t[1:-1] + t[0:1] if len(t) > 1 else t
答案 2 :(得分:0)
如果你只需要一个切换元组的副本。 (当然你不会得到它)
def switchItems(t):
if len(t) > 1:
return tuple(t[-1] + list(t[1:-2]) + t[0])
return t
答案 3 :(得分:0)
您可以执行以下操作:
def switchItems(my_tuple):
l1 = list(my_tuple) # Convert to a list
if l1: # check if not empty to prevent 'list index out of range' error
l1[0], l1[-1] = l1[-1], l1[0] #swap first and last items
return tuple(l1)
您将元组传递给switchItems()
函数。该函数将元组转换为列表。然后,如果在上一步中获得的列表不为空,则使用索引0
和-1
交换第一个和最后一个元素。这样做是为了防止在访问第一个和最后一个元素时出现list index out of range
错误。