如何使用foor循环交换列表中的各个元素?

时间:2017-10-03 18:29:48

标签: python

所以我正在编写一个带有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 

不起作用。

5 个答案:

答案 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))