因此,我正在进行“交易或不交易”,并且我目前正在尝试随机分配什么案件持有多少金额。目前,我的代码创建了值列表,然后随机化了一个选择,然后将其输入到数组中。然后,它将26个值输出到控制台。现在,当从列表中选择一个值并将其输入到数组中时,我希望从列表中删除该值。因此,当循环重复并从列表中选择另一个项目时,它将无法再选择上一个循环中选择的项目。
RemoveAll
我尝试先使用AddressOf
,然后再使用 values.RemoveAll(AddressOf cases)
删除重复的值,但这似乎不起作用。
from collections import defaultdict
d = defaultdict(lambda: [])
start_list = [('A99', 2, 3, 'B1'), ('A21', 3, 4, 'B1'), ('A123', 4, 5, 'B2'), ('A22', 3, 6, 'B2'), ('A12', 4, 6, 'B1')]
for elt in start_list:
d[elt[3]].append(elt[0])
grouped_list = [[k, v] for k, v in d.items()]
答案 0 :(得分:0)
您可以在选择以下金额时使用RemoveAt
:
删除元素在列表的指定索引处。
像这样:
For i = 0 To cases.Length - 1
cases(i) = sselect.Next(0, values.Count)
Console.WriteLine(values(cases(i)))
values.RemoveAt(cases(i))
Next
使用这种方法将立即从列表values
中删除使用的值,这反过来将不允许选择重复的值。
我建议您先遍历原始列表的副本。一种快速简单的方法是在开始时两次创建列表。
Dim values = New List(Of Integer)({0.5, 1, 2, 5, 10, 15, 25, 50, 80, 100, 500, 750, 1000, 2000, 5000, 10000, 25000, 50000, 80000, 100000, 150000, 250000, 500000, 850000, 1000000, 10000000})
Dim original = New List(Of Integer)({0.5, 1, 2, 5, 10, 15, 25, 50, 80, 100, 500, 750, 1000, 2000, 5000, 10000, 25000, 50000, 80000, 100000, 150000, 250000, 500000, 850000, 1000000, 10000000})
以这种方式从values
列表中删除所有它们之后。您仍将它们保留在original
列表中。假设您稍后会重用它们。
答案 1 :(得分:0)
有更好的方法:
List(Of Integer)
完成!顺便问一下,如何将0.5存储在IEnumerable(Of Double)
中?
编辑:
在我的原始代码中,最终结果将是ToList
。我应该在List(Of Double)
上添加一个调用,以获得Double
,现在已经添加了。
代码使用隐式类型的数组,并且由于其中存在一个Double
值,因此该数组被推断为类型Integer
。所有Doubles
值都隐式转换为List(Of Decimal)
。如果您希望使用List(Of Double)
而不是0.5
,则只需将Double
的{{1}}更改为{{1}的0.5D
}文字。