将一个列表的元素分配给另一个列表的元素

Posted

技术标签:

【中文标题】将一个列表的元素分配给另一个列表的元素【英文标题】:Assigning elements of one list to elements of another 【发布时间】:2019-08-31 10:23:06 【问题描述】:

我正在 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

【讨论】:

感谢您的回复,说真的,zip 很简洁,会很有帮助,但我不只是按照确切的顺序将两个列表的每个元素附加在一起,还需要一个 if关于盒子是否有球但拉链可能在以后有用的声明。并感谢代码快捷方式 na_list = [n for n in range(na_calc, 0, -1) if my_random_condition(n)] 可能会有所帮助。

以上是关于将一个列表的元素分配给另一个列表的元素的主要内容,如果未能解决你的问题,请参考以下文章

将列表成员分配给另一个列表

如何将列表中的值分配给熊猫数据框并控制每个列表元素在数据框中的分布/频率

Python:通过将对象分配给另一个对象来修改它

python怎么将列表中元素分配成三份(无需连续),列举出所有的方案?

将列表元素分配给变量

删除列表中的元素