Как я могу добавить списки с элементами из другого списка и оставить их пустыми в симуляции?
Вот мой код:
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