将项目与新列表中的随机数列表分开

时间:2016-06-03 22:07:26

标签: python list

我在区间[1,12]中有一个1000个随机数的列表,我正在寻找一种方法将它们分隔在其他列表中,这样我只能获得1个新列表,其他只有2个,所以上。

我生成列表的Python代码是:

A=[]
for x in range(1,1001):
    A.append(random.randint(2, 12))
print A

2 个答案:

答案 0 :(得分:1)

为列表A的每个唯一元素创建一个包含键的字典。然后为每个键创建一个列表。

f={}
for i in set(A):
  f[i]=[i]*A.count(i)

这样说A有82个元素2.A.count(2)= 82.你想要一个[2,...,2]的列表,其长度为82.你可以只是写[2] * 82得到这样的清单。

迭代器对A中的每个元素的数量执行此操作。

答案 1 :(得分:1)

try: import lasagne import theano import theano.tensor as T input_var = T.tensor4('inputs') target_var = T.fmatrix('targets') network = lasagne.layers.InputLayer(shape=(None, 1, height, width), input_var=input_var) from lasagne.layers import BatchNormLayer network = BatchNormLayer(network, axes='auto', epsilon=1e-4, alpha=0.1, beta=lasagne.init.Constant(0), gamma=lasagne.init.Constant(1), mean=lasagne.init.Constant(0), inv_std=lasagne.init.Constant(1)) network = lasagne.layers.Conv2DLayer( network, num_filters=60, filter_size=(3, 3), stride=1, pad=2, nonlinearity=lasagne.nonlinearities.rectify, W=lasagne.init.GlorotUniform()) network = lasagne.layers.Conv2DLayer( network, num_filters=60, filter_size=(3, 3), stride=1, pad=1, nonlinearity=lasagne.nonlinearities.rectify, W=lasagne.init.GlorotUniform()) network = lasagne.layers.MaxPool2DLayer(incoming=network, pool_size=(2, 2), stride=None, pad=(0, 0), ignore_border=True) network = lasagne.layers.DenseLayer( lasagne.layers.dropout(network, p=0.5), num_units=32, nonlinearity=lasagne.nonlinearities.rectify) network = lasagne.layers.DenseLayer( lasagne.layers.dropout(network, p=0.5), num_units=1, nonlinearity=lasagne.nonlinearities.sigmoid) return network, input_var, target_var 列表中使用groupby,并使用dict comprehension来构建结果词典:

sorted

或者要有一个列表列表(@ColonelBeauvel),只需使用列表推导:

from itertools import groupby

result = {i: list(g) for i, g in groupby(sorted(A))}

print result
# {1: [1, 1, 1], 2: [2, 2, 2, 2], 3: [3, 3]...}