我在区间[1,12]中有一个1000个随机数的列表,我正在寻找一种方法将它们分隔在其他列表中,这样我只能获得1个新列表,其他只有2个,所以上。
我生成列表的Python代码是:
A=[]
for x in range(1,1001):
A.append(random.randint(2, 12))
print A
答案 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]...}