我有一份清单清单:
lists=[[1.2,0], [4.5,0], [2.1,1], [6.5,0], [3.4,1]]
我想将所有具有0的元素放在一个列表中,将所有1放在另一个列表中,所以它看起来像这样:
res1=[2.1, 3.4]
res0=[1.2, 4.5, 6.5]
我尝试过以下操作,但似乎无效:
for a in lists:
for b in lists:
if b ==0:
res1.append(lists[1])
else:
res2.append(lists[2])
我是python的新手,我尝试过在线搜索,但我无法找到结果。任何帮助,将不胜感激。谢谢!
答案 0 :(得分:0)
您不需要嵌套循环。使用a
和b
作为解包变量:
for a,b in lists:
if b==0:
res1.append(a)
else:
res2.append(a)
或者您可以创建一个新的列表列表,其中0或1用作索引:
result = [[], []]
for a,b in lists:
result[b].append(a)
答案 1 :(得分:-1)
算法应如下所示:
列表中的每个项目
检查项目的第二个元素是0还是1
如果为0,则在res0
中附加项目的第一个元素如果为1,则在res1
中附加项目的第一个元素
让我们最简单地在python中翻译算法:
lists=[[1.2,0], [4.5,0], [2.1,1], [6.5,0], [3.4,1]]
res0=[]
res1=[]
for i in lists:
# You have inner lists in i i.e. [1.2,0], [4.5,0] , ... etc
if i[1] == 0 :
res0.append(i[0])
elif i[1] == 1:
res1.append(i[0])
或者,您可以使用简单的列表理解来完成。
>>> a = [[1.2,0], [4.5,0], [2.1,1], [6.5,0], [3.4,1]]
>>> [i[0] for i in a if not i[1]]
[1.2, 4.5, 6.5]
>>> [i[0] for i in a if i[1]]
[2.1, 3.4]
>>>
顺便说一句,这个解决方案假设您的内部列表中只有两个项目。
答案 2 :(得分:-1)
不要用你自己的算法重新发明轮子:
my_list = [[1.2,0], [4.5,0], [2.1,1], [6.5,0], [3.4,1]]
with_zero = list(filter(lambda x: 0 in x, my_list))
with_one = list(filter(lambda x: 1 in x, my_list))
print with_zero
print with_one
结果:
[[1.2, 0], [4.5, 0], [6.5, 0]]
[[2.1, 1], [3.4, 1]]