<p>我熟悉用于列表的内置sum()函数,以前也使用过,例如:</p>
<pre><code>sum(list1[0:41])
</code></pre>
<p>当我需要一个实例时,我需要从一个类中求出一个整数。在</p>
<p>我上这个班:</p>
^{pr2}$
<p>它们都引用XML文件中的float,这些实例稍后会进入我的代码中的一个列表中。在</p>
<p>例如,我想做的是:</p>
<pre><code>sum(list[0:41].freq)
</code></pre>
<p>其中列表包含类实例。在</p>
<p>我还尝试在循环中获取它,这样sum()范围内的第二个数字每次都会增加,例如:</p>
<pre><code>for i in range(len(list)):
sum(list[0:i+1].freq)
</code></pre>
<p>有人知道我该怎么做吗?或者有别的办法吗?在</p>
<p>谢谢!在</p>
<p><strong>更新:</strong></p>
<p>感谢所有的回复,我将尝试提供一些比我首先提出的概念更具体的东西:</p>
<pre><code># Import XML Parser
import xml.etree.ElementTree as ET
# Parse XML directly from the file path
tree = ET.parse('xml file')
# Create iterable item list
items = tree.findall('item')
# Create class for historic variables
class DataPoint:
def __init__(self, low, high, freq):
self.low = low
self.high = high
self.freq = freq
# Create Master Dictionary and variable list for historic variables
masterDictionary = {}
# Loop to assign variables as dictionary keys and associate their values with them
for item in items:
thisKey = item.find('variable').text
thisList = []
masterDictionary[thisKey] = thisList
for item in items:
thisKey = item.find('variable').text
newDataPoint = DataPoint(float(item.find('low').text), float(item.find('high').text), float(item.find('freq').text))
masterDictionary[thisKey].<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(newDataPoint)
# Import random module for pseudo-random number generation
import random
diceDictionary = {}
# Dice roll for historic variables
for thisKey in masterDictionary.keys():
randomValue = random.random()
diceList = []
diceList = masterDictionary[thisKey]
for i in range(len(diceList)):
if randomValue <= sum(l.freq for l in diceList[0:i+1]):
diceRoll = random.uniform(diceList[i].low, diceList[i].high)
diceDictionary[thisKey].append(diceRoll)
</code></pre>
<p>我基本上是想创建一个骰子掷骰子的字典来匹配我的主字典的键和数据。我的类的freq实例是指某些箱子被应用的概率,由掷骰子(随机数)决定。这就是总结的目的。在</p>
<p>也许这有助于澄清我的意图?求和示例中的“i”是指某个变量的数据点数。在</p>
<p>一旦我有了在out循环中选择了哪些rolls的字典(这里没有显示),我将把它应用到下面的代码中,使之更有意义。在</p>
<p>如果对我的意图还有什么疑问,请告诉我。我将尝试这些建议中的一些,但考虑到我所提供的,也许有人可以将其分解为最简单的形式。在</p>
<p>谢谢!在</p>
<p>您是否尝试过:</p>
<pre><code>sum(i.freq for i in items[0:41])
</code></pre>
<p>如果需要最后“i”元素的累计和,以下是最有效的方法:</p>
^{pr2}$
<p>正如其他海报已经预料到的那样,为变量使用内置名称是一种糟糕的编程风格;我在上面的代码中将<code>list</code>替换为<code>items</code>。在</p>