Python Forum
The Empty List Blocks Recursion
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
The Empty List Blocks Recursion
#1
List = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
step = 4



def ResetCR (l, stp):
    K = []
    if stp != 0:
        for i in range(1, int(len(l)/stp)+1):
            K.append(l[i*stp - 1])
        l = [x for x in l if x not in K]
        stp = stp - 1
        return ResetCR(l,stp)
    if stp == 0:
        return K


F = ResetCR(List,step)

print (F)
I'm trying to change the order of a list. If the "K = []" is out side the function, it works. However, I'm wondering is there a way to keep the variable 'K' inside the function?
Reply
#2
Is there some reason you need to use recursion?

def reset2 (l, stp):
    k = []
    for s in range(stp, 0, -1):
        for i in range(1, int(len(l) / s) + 1):
            k.append(l[i * s - 1])
        l = [x for x in l if x not in k]
    return k
Craig "Ichabod" O'Brien - xenomind.com
I wish you happiness.
Recommended Tutorials: BBCode, functions, classes, text adventures
Reply
#3
(Mar-05-2019, 03:34 PM)ichabod801 Wrote: Is there some reason you need to use recursion?

def reset2 (l, stp):
    k = []
    for s in range(stp, 0, -1):
        for i in range(1, int(len(l) / s) + 1):
            k.append(l[i * s - 1])
        l = [x for x in l if x not in k]
    return k


Just to practice recursion... Thank you for the solution!
Reply
#4
In terms of recursion, my first thought was to have K be a parameter, defaulting to an empty list, and passing the modified K when you recurse. However, there are problems with using empty lists as parameter defaults. You would have to use None as the default, and then replace it with a list in the body of the function (if it is None).
Craig "Ichabod" O'Brien - xenomind.com
I wish you happiness.
Recommended Tutorials: BBCode, functions, classes, text adventures
Reply
#5
(Mar-05-2019, 04:11 PM)ichabod801 Wrote: In terms of recursion, my first thought was to have K be a parameter, defaulting to an empty list, and passing the modified K when you recurse. However, there are problems with using empty lists as parameter defaults. You would have to use None as the default, and then replace it with a list in the body of the function (if it is None).

My question is if I replace K in the function with a list and the list is not empty, how does the ".append" effect the list or should I still use ".append" to change the list? Also, in that way, I need a K outside the function.
Reply
#6
I'm not sure I understand the question. If you have a K in the function as a non-empty list, append will add to what is already in the list. But if you are defining K in the function, you will have the same problem of it resetting every time you recurse. But if you have a default, and pass the modified list each time you recurse, it doesn't reset.
Craig "Ichabod" O'Brien - xenomind.com
I wish you happiness.
Recommended Tutorials: BBCode, functions, classes, text adventures
Reply
#7
(Mar-05-2019, 06:32 PM)ichabod801 Wrote: I'm not sure I understand the question. If you have a K in the function as a non-empty list, append will add to what is already in the list. But if you are defining K in the function, you will have the same problem of it resetting every time you recurse. But if you have a default, and pass the modified list each time you recurse, it doesn't reset.

Thank you! It is very helpful. I think I figured it out.

List = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
step = 4



def ResetCR (l, stp, K = None):
    if K is None:
        K = []
    if stp != 0:
        for i in range(1, int(len(l)/stp)+1):
            K.append(l[i*stp - 1])
        l = [x for x in l if x not in K]
        stp = stp - 1
        return ResetCR(l,stp,K)
    if stp == 0:
        return K


F = ResetCR(List,step)

print (F)
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Code with empty list not executing adeana 9 3,634 Dec-11-2023, 08:27 AM
Last Post: buran
  RSA Cipher with blocks Paragoon2 0 452 Nov-26-2023, 04:35 PM
Last Post: Paragoon2
  How to properly format rows and columns in excel data from parsed .txt blocks jh67 7 1,799 Dec-12-2022, 08:22 PM
Last Post: jh67
  set.difference of two list gives empty result wardancer84 4 1,433 Jun-14-2022, 01:36 PM
Last Post: wardancer84
  displaying empty list vlearner 5 1,606 Jan-19-2022, 09:12 AM
Last Post: perfringo
  Remove empty keys in a python list python_student 7 2,899 Jan-12-2022, 10:23 PM
Last Post: python_student
  Browse and build a list of folder paths using recursion Ultrainstinct_5 8 4,932 Apr-24-2021, 01:41 PM
Last Post: Ultrainstinct_5
  Am I a retard - else and finally blocks in a try statement RubenF85 6 2,512 Jan-12-2021, 05:56 PM
Last Post: bowlofred
  What is the value after JOINING an empty list? JaneTan 2 5,061 Jan-04-2021, 06:25 PM
Last Post: deanhystad
  Printing empty list? hhydration 2 2,078 Oct-28-2020, 11:34 AM
Last Post: Atekka

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020