Присвоение элементов одного списка элементам другого

#python #python-2.7 #spyder

#python #python-2.7 #spyder

Вопрос:

Я программирую симуляцию твердых тел Эйнштейна в Python, если вы не знаете, что это такое, это нормально, это относительно просто, когда сводится к коробкам и шарам, мне нужно распределить шары между коробками, а коробки могут содержать более одного шара, но, очевидно, одна коробка не может быть разделена на несколько шаров. Пользователь вводит количество шаров и ящиков, поэтому они не являются константами. Я новичок в программировании, и логические тупики в этом убивают меня, если у кого-то есть идея, которая была бы отличной.

для контекста, в аналогии со ссылкой на мой код, блоки являются генераторами, а шары — энергией.

Логический путь, которым я сейчас занимаюсь, заключается в создании списка, длина которого равна количеству ящиков, а отдельные элементы просто являются «порядком» ящиков, и делают то же самое для шаров, создавая список с количеством шаров, равным длине. Я был на идее просто найти вероятность попадания мяча в одну коробку и, по сути, выполнять подбрасывание монет для каждой из коробок с этой вероятностью вместо 1/2, но это не гарантирует, что каждый заданный мяч помещается в коробку, и все они должны быть учтены.

 Na=raw_input( "What is the amount of oscillators within object 1? (a positive integer, Na)")
Nb=raw_input( "What is the amount of oscillators within object 2? (a positive integer, Nb)")
N_tot=int((raw_input( "What is the total amount of oscillators within the system? (a positive integer that=Na Nb)")))

NaList=[]
Na_calc=int(Na)
While Na_calc>0
    NaList.append(Na_calc)
    Na_calc=Na_calc-1
  

В конечном итоге ожидается, что я смоделирую кучу разных «шариковых капель», где энергия распределяется между генераторами, и проведу дополнительный анализ того, как некоторые из них будут взаимодействовать, но ранее упомянутая проблема распределения списка по списку решит самую большую логическую проблему,

Спасибо.. удачного

Ответ №1:

Я чувствую, что приведенный выше пример может быть не тем, о чем вы просите в своем вопросе, но, возможно, вы могли бы использовать понимание списка, чтобы упростить то, что вы делаете в своем примере

 na_list = [n for n in range(na_calc, 0, -1)]
  

Однако я чувствую, что ваш вопрос, скорее всего, будет решен с помощью чего-то вроде zip.
https://docs.python.org/3.7/library/functions.html#zip

Комментарии:

1. спасибо за ваш ответ, серьезно, zip — это аккуратно и было бы полезно, но я не просто добавляю каждый элемент из двух списков вместе в точном порядке, потребуется использовать оператор if относительно того, получает ли поле мяч, но zip может быть полезен позже. и спасибо за ярлыки кода

2. na_list = [n for n in range(na_calc, 0, -1) if my_random_condition(n)] тогда может быть полезно.