Как я могу добавить списки с элементами из другого списка и оставить их пустыми в симуляции?

Вот мой код:

import random
listx = []
ready = 0
listy = []
listz = []

#function

def function(r,s,q):
    listy=[]
    if len(listx)==4 or len(listx)==8:
        listy.append((listx, t))
        print "y", listy

# here it starts:

for t in range(1,25): 

    randomnumber = random.uniform(0.0, 1.0)

    if randomnumber <= 0.5:
        listx.append((t))   
        print "x", listx

    if ready == 0: #condition, lets say: ready is always 0
        function(5,6,8) #this function generates listy from input of listx

    if listy != 0: #if listy is not empy anymore, fill listz with items of listy
            listz.append(listy)
            del listy
            print "z", listz

У меня 3 списка; listx, listy а также listz, Я генерирую случайные числа для listx, Если ready==0 (всегда) я вызываю функцию (function(r,s,q)), Если условие (len==4 or 8) встречаются, элементы в списке добавляются в список.

На данный момент, я хотел бы добавить эти цифры из listy в listz и уходи listy снова пусто Предметы, которые я перевозил listy в listz должны быть удалены из listx,

Кто-нибудь знает как это решить?

1 ответ

Решение

Я думаю, что это, возможно, вы хотите. Изменения в вашем коде обозначены # UPPERCASE COMMENTS,

import random
listx = []
ready = 0
listy = []
listz = []

#function

def function(r,s,q):
    global listy  #### ADDED

    listy=[]
    if len(listx) in (4, 8):  # STREAMLINED
        listy.append((listx, t))
        print "y", listy

# here it starts:

for t in range(1,25):

    randomnumber = random.uniform(0.0, 1.0)

    if randomnumber <= 0.5:
        listx.append((t))
        print "x", listx

    if ready == 0: # condition, lets say: ready is always 0
        function(5,6,8) # this function generates listy from input of listx

    #### REWRITTEN
    if listy: # not empty?
        listz += listy[0][0]  # copy numbers from listy to listz
        del listx[:len(listy[0][0])]  # remove numbers transported from listx
        del listy  # empty listy
        print "z", listz
Другие вопросы по тегам