如何在没有内置功能的情况下反转列表

时间:2019-06-05 15:35:36

标签: python python-3.x list reverse

我在做作业时遇到了这个问题,我几乎明白了,但还不是很清楚。我必须开发一些将列表和数字作为参数的代码。该函数返回列表的副本,其中第一个项目数被颠倒。我不能使用内置函数,切片或反向,只能使用append。()和range()。真的会感谢某人在修复我当前代码以及解释您如何修复它方面的帮助吗?谢谢!!!

str_list6 = ['e', 'd', 'u', 'd']

def length(my_list):
    total = 0
    for c in my_list:
        total += 1
    return total

def remove_value(my_list):
    res = []

    for i in range(length(my_list) -1, -1, -1):
        res.append((my_list)[i])

    return res

给出的示例:

numList = [1, 2, 3, 4, 5, 6, 7]
number = 4

The call to reverse(numList, number) should 
    return the new list
     [4, 3, 2, 1, 5, 6, 7]. 

因此,我的代码当前仅是反转列表,但是(很难解释),它需要随着“数字”的移位而反转。希望这有道理!

4 个答案:

答案 0 :(得分:1)

这里的问题是您没有考虑要转移的数字。在您的示例中,为您提供了两个变量,即列表和要移动的数字(这是您要查找的位置还是实际数字?-假定位置),但是您的代码仅包含列表。

def remove_value(my_list, pos_to_reverse):
    res = []

    for i in range(pos_to_reverse-1, -1):
        res.append(my_list[i])

    for i in range(pos_to_reverse, length(my_list)-1):
        res.append(my_list[i])

    return res

答案 1 :(得分:0)

您可以使用这个小循环:

numList = [1, 2, 3, 4, 5, 6, 7]
number = 4

def reverse(l, n):
  for i in range((n + 1) // 2):
    l[i], l[n - i - 1] = l[n - i - 1], l[i]
  return l

print(reverse(numList, number))

输出:

[4, 3, 2, 1, 5, 6, 7]

答案 2 :(得分:0)

您越来越近了!我认为下面的功能可以满足您的需求。

def reverse(numList,number):
    # Make an empty list
    reversedlist=[]

    for i in range(number):
    # i goes from 0 to number-1
        reversedlist.append(numList[number-i-1])
        # build a reversed list by adding each element
        # of numList going in reverse order.

    for i in range(number):
    # i goes from 0 to number-1
        numList[i]=reversedlist[i]
        # change the first 'number' elements of the
        # original list with the reversed list.

    return numList

numList = [1, 2, 3, 4, 5, 6, 7]
number = 4

print(reverse(numList,number))
# prints: [4, 3, 2, 1, 5, 6, 7]

答案 3 :(得分:0)

您可能会这样做。

l = [1, 2, 3, 4, 5, 6, 7]
n = 4

def solution(lst,n):     
    size = n             
    hiindex = size - 1
    its = size//2            
    for i in range(0, its):    
        temp = lst[hiindex]     
        lst[hiindex] = lst[i]
        lst[i] = temp
        hiindex -= 1  
    return lst 
print(solution(l,n))