По сути, я хочу удалить каждый элемент слева от списка, пока не останется один элемент. А потом перерыв. Я также перебираю каждый индекс c, так как это список подсписков. Я удаляю первый элемент во внутреннем списке. (например, список == 1234 .... 1234, 234, 34 и, наконец, 4)
Редактировать: Мой компьютер был очень странным в последнее время. Если время l oop не бесконечно на вашем компьютере. Пожалуйста, рассмотрите любые ошибки, которые я могу или мог бы внести в бесконечное число oop. Я не знаю, что происходит.
r=[];
c = [[1,2],[3,2],[3],[1]]
for j in range(1, len(c)):
if str(any(elem in c[0] for elem in c[j])) == 'False':
r.append(c[j])
if j == len(c) - 1:
del c[0]
r[:] = []
print(r, c)
Вывод
[] [[3, 2], [3], [1]]
Детализация результатов
# The statement has succesfully deleted c[0]
# >>> c
#[[3, 2], [3], [1]]
#The statement has succesfully cleared the list
# >>> r
#[]
# Basically, I want to delete each element to the left of the list until there is one element left. And then break.
# (eg. 1234, 234, 34, and finally 5)
# There are 10 steps in this loop. because 1+2+3+4 == 10
В то время как l oop, который предназначен для выполнения приведенных выше утверждений, теперь застрял в бесконечности для l oop.
c = [[1,3],[3,2],[3,4],[1]]
r=[];
while len(c) > 1:
for j in range(1, len(c)):
if str(any(elem in c[0] for elem in c[j])) == 'False':
r.append(c[j])
r.append(c[0])
# we use print(r) to show bug
print(r)
if j == len(c) - 1:
# This statement is intended to break an infinite loop but fails to do so.
del c[0]
r[:] = []
if len(c) == 1:
quit()
print(r)
output
[3,4],[1],[2,3],[1,3],[1,3]... infinite loop output
Выход не является проблемой. Нет необходимости вдаваться в подробности о выходе. Мне просто нужно выяснить, как l oop через список элементов, как показано выше.
Вопрос
Какие мои ошибки в моем времени l oop, которые делают его бесконечным l oop? Есть ли какие-нибудь решения, которые вы можете дать мне, чтобы я мог научиться не повторять ту же ошибку снова?