所以我正在编写一个带有2个列表并切换其值的函数。我将有2个列表
list_one = [1, 2, 3]
list_two = [4, 5, 6]
我想切换他们的价值观。输出应该类似于
#Before swap
list_one: [1, 2, 3]
list_two: [4, 5, 6]
#After swap
list_one: [4, 5, 6]
list_two: [1, 2, 3]
这是一个小小的学校作业,所以我想使用一个for循环,这就是我所说的。
到目前为止,这是我的代码:
def swap_lists(first, second):
if len(first) != len(second):
print "Lengths must be equal!"
return
first == second
print second
list_one = [1, 2, 3]
list_two = [4, 5, 6]
print "Before swap"
print "list_one: " + str(list_one)
print "list_two: " + str(list_two)
swap_lists(list_one, list_two)
print "After swap"
print "list_one: " + str(list_one)
print "list_two: " + str(list_two)
我也想出了
first,second = second,first
不起作用。
答案 0 :(得分:6)
就for
循环而言,您可以逐个元素地交换
for i in range(len(list_one)):
list_one[i], list_two[i] = list_two[i], list_one[i]
更简洁地说,您可以交换整个列表
list_one, list_two = list_two, list_one
如果一个列表比另一个列表长,那么您需要在上述任一方法中使用额外的逻辑
答案 1 :(得分:1)
除了CoryKramer的答案,为了便于理解,你可以使用一个临时变量:
def swap_lists(first, second):
if len(first) != len(second):
print "Lengths must be equal!"
return
for i in range(0, len(first)):
temp = second[i]
second[i] = first[i]
first[i] = temp
list_one = [1, 2, 3]
list_two = [4, 5, 6]
print "Before swap"
print "list_one: " + str(list_one)
print "list_two: " + str(list_two)
swap_lists(list_one, list_two)
print "After swap"
print "list_one: " + str(list_one)
print "list_two: " + str(list_two)
答案 2 :(得分:0)
def swap_values(list_one, list_two):
if len(list_one) != len(list_two)
raise NotImplementedError("Invalid list sizes for swap")
for i in range(len(list_one)):
list_one[i], list_two[i] = list_two[i], list_one[i]
有更好的方法可以做到这一点,但如果你必须使用for循环,这是一种解决不匹配长度的相当紧凑的方法。
如果您需要处理不匹配长度的逻辑,请在适当的位置插入并删除NotImplementedError
答案 3 :(得分:0)
假设两个列表长度相等:
def swap_lists(first, second):
if len(first) != len(second):
print "Lengths must be equal!"
return
for idx, val in enumerate(first):
temp = first[idx]
first[idx] = second[idx]
second[idx] = temp
如果你的作业要求for循环,那么你就可以迭代遍历列表的索引。
所以我回答回答作业问题并不会感觉不好,这是通常的免责声明,以确保你了解你转入的任何内容,无论是我的解决方案还是其他答案。我还读到了Python的enumerate函数,我在上面使用过它。
答案 4 :(得分:0)
Python提供了非常好的交换元素的方法:
list_one = [1, 2, 3]
list_two = [4, 5, 6]
for i in range(len(list_one)):
for j in range(len(list_two)):
list_one[i],list_two[j]=list_two[j],list_one[i]
print("old list : {} is now swapped list : {}".format(list_one,list_two))
print("old list : {} is now swapped list : {}".format(list_two,list_one))