Как я могу сделать al oop, который печатает все остальные записи в списке? - PullRequest
0 голосов
/ 05 апреля 2020

Так что мне нужна программа, которая возьмет элемент в списке и напечатает все остальные элементы в этом списке, за исключением исходного.

Например, если у меня был список, такой как:

ls = ['Sun','Earth','Mars','Venus']

Когда выбрано «Солнце», то будут напечатаны «Земля», «Марс» и «Венера», тогда программа перейдет на «Землю» с печатью «Солнце», «Марс» и т. Д. c и т. Д. 1015 * ...

Я думал, что это можно сделать с помощью для l oop, но я не могу найти способ заставить его работать.

edit: Забыли добавить что я пробовал, вот оно:

bodies = ['Sun','Earth','Mars','Venus']

for i in (bodies):
    bodies.remove(i)
    for j in bodies:
        print(j)
    print('\n')
    bodies.append(i)

print(bodies)

У кого-нибудь есть вход?

Ответы [ 4 ]

1 голос
/ 05 апреля 2020

Итак, я слушал Quamrana, который опубликовал комментарий о том, что редактировать коллекцию, которую я перебираю, плохо, поэтому я использовал комбинацию циклов for плюс небольшой ответ из exe и придумал следующее:

ls = ['Sun','Earth','Mars','Venus']

for planet in ls:

    print('Current: ' + repr(planet))

    for i in ls:
        if i not in planet:
            print(i)

    print('\n')

Спасибо и exe, и quamrana за помощь в этом.

1 голос
/ 05 апреля 2020

вы можете использовать:

for i, _ in enumerate(ls):
    print(*[e for j, e in enumerate(ls) if i != j])

вывод:

Earth Mars Venus
Sun Mars Venus
Sun Earth Venus
Sun Earth Mars
0 голосов
/ 05 апреля 2020
# these work if no duplicates in list
for item in lst:
    print(set(lst) - set([item])

for item in lst:
    print([I for I in lst if I != item])

# this works if potential duplicates
for idx, item in enumerate(lst):
    if idx == 0:
        print(lst[1:])
    elif idx == len(lst) - 1:
        print(lst[:-1])
    else:
        print(lst[0:idx] + lst[idx + 1:])

0 голосов
/ 05 апреля 2020

Я думаю, что это похоже на

ls = ['sun','earth','mars','venus'];
a = 'earth';
for i in range (len(ls)):
    if ls[i] != a:
        print(ls[i]);

, где a - это pl anet, который вы не хотите показывать, потому что я не могу вспомнить, как вводить значения в python lol.

Функция len () возвращает длину массива, очень полезна, надеюсь, она вам поможет

...