我有一个如下矩阵:
a1 = [[ '05dcc1a8cd49fbe2e7d7fb105d697e96','122624838'],
['5d9573196098ce0bb80b4657e43f2d3b','122624838'],
['df29c5dafbfe8c0dcb5c92a2225c8899','3388999'],
['33f95122281f76e7134f9cbea3be980f','3388999'],
['b013295b38799b8c537c850ff891170e','3388999'],
['b8dc623f5b936f9959e648323f061b3a','3388999']]
我有另一个列表,我想根据矩阵的第二列拆分。清单如下:
pred = [1,1,1,1,0,0,1..]
我想根据a1中不同的第二列值获取包含列表pred的值的单独列表。 a1和pred的长度是相同的。这样做的最佳方式是什么?
(例如result1 = [1,1],因为a1使第二列中的前两个值相同,result2 = [1,1,0,0],因为a1的第二列中的后四个值)
答案 0 :(得分:0)
我已经考虑过您的问题,并尝试为此编写可能的解决方案。
#let consider you have the given values of 'a1' and 'pred'
a1 = [ '05dcc1a8cd49fbe2e7d7fb105d697e96','122624838',
'5d9573196098ce0bb80b4657e43f2d3b','122624838',
'df29c5dafbfe8c0dcb5c92a2225c8899','3388999',
'33f95122281f76e7134f9cbea3be980f','3388999',
'b013295b38799b8c537c850ff891170e','3388999',
'b8dc623f5b936f9959e648323f061b3a','338899'
'bjdhjndehjkkh54jht3u5355j4jj3453','338899']
pred=[1,1,1,1,0,0,1]
count=[]
flag=1
for x in range(0,len(a1)-1):
if x%2!=0:
if a1[x]==a1[x+2]:
flag=flag+1
else:
count.append(flag)
flag=1
count.append(flag)
print(count) # The length and no. of partitions
# Printing the required list of values from pred
i=0
l=0
for x in count:
print(pred[i:l+x])
i=l+x
l=l+x+1
这适用于a1
和pred
的任何值,只要您考虑根据{{中的连续相同值的数量来分割pred
中的值1}} ,假设两个列表的长度相同。
希望这会有所帮助!!