我有一些变量,如果var == 1
将1
添加到lista_a
,如果{{1}将var == 2
添加到1
...,例如:
lista_b
我需要得到:
inx0=2 inx1=1 inx2=1 inx3=1 inx4=4 inx5=3 inx6=1 inx7=1 inx8=3 inx9=1
inx10=2 inx11=1 inx12=1 inx13=1 inx14=4 inx15=3 inx16=1 inx17=1 inx18=3 inx19=1
inx20=2 inx21=1 inx22=1 inx23=1 inx24=2 inx25=3 inx26=1 inx27=1 inx28=3 inx29=1
lista_a=[]
lista_b=[]
lista_c=[]
#this example is the comparison for the first variable inx0
#and the same for inx1, inx2, etc...
for k in range(1,30):
if inx0==1:
lista_a.append(1)
elif inx0==2:
lista_b.append(1)
elif inx0==3:
lista_c.append(1)
答案 0 :(得分:3)
你的inx *变量几乎应该是一个开头的列表:
inx = [2,1,1,1,4,3,1,1,3,1,2,1,1,1,4,3,1,1,3,1,2,1,1,1,2,3,1,1,3,1]
然后,找出它有多少2个:
inx.count(2)
如果必须,您可以构建一个新列表:
list_a = [1]*inx.count(1)
list_b = [1]*inx.count(2)
list_c = [1]*inx.count(3)
但保持一份清单似乎很愚蠢。真的,你需要保留的唯一数据是一个整数(计数),那么为什么还要烦扰一个列表呢?
获取列表的另一种方法是使用defaultdict:
from collections import defaultdict
d = defaultdict(list)
for item in inx:
d[item].append(1)
在这种情况下,list_a
可以访问您想要的d[1]
,list_b
可以访问d[2]
,等等。
或者,如评论中所述,您可以使用collections.Counter
:
from collections import Counter #python2.7+
counts = Counter(inx)
list_a = [1]*counts[1]
list_b = [1]*counts[2]
...