繁体   English   中英

删除列表中某些项目的实例?

[英]Remove certain instances of item in a list?

我正在编写一个代码,以计算创建列表中的其他乐曲(例如2x2 = 2 1x1)所需的乐高乐曲的数量,并且我要处理这一部分。 但是,我也想在此“合并”过程之后返回一个新列表,该列表删除已使用或合并的乐高玩具(因此不再可用)。 我现在的代码剥离了乐高玩具的所有实例,而不仅仅是“使用过的”实例。 我想知道是否有一种方法可以从列表中删除某项乘以数字。 提前致谢。

import hw4_util
legos = hw4_util.read_legos()

print 'Current legos',legos

def lego_work(lego,q,leglist): 
        count=0
        num1x1= leglist.count('1x1')
        num2x1= leglist.count('2x1')
        num2x2= leglist.count('2x2')
        num4x2= leglist.count('4x2')
        if lego =='1x1':
                count = num1x1
        elif lego == '2x1':
                if num2x1 == 0:
                        count = (num1x1/2)
                        leglist2= filter(lambda a: a != '1x1', leglist)
                else:
                        count= num2x1
                        leglist2=filter(lambda a: a != '2x1', leglist)
        elif lego =='2x2':
                if num2x2==0 and (num2x1/2) ==0:
                        count = (num1x1/4)
                        leglist2=  filter(lambda a: a != '1x1', leglist)
                elif num2x2==0 and num2x1>0:
                        count= num2x1
                        leglist2= filter(lambda a: a != '2x1', leglist)
                else:
                        count=num2x2
                        leglist2= filter(lambda a: a != '2x2', leglist)
        elif lego== '4x2':
                if num4x2==0 and (num2x2/2) and (num2x1/4)==0:
                        count = (num1x1/8)
                        leglist2= filter(lambda a: a != '1x1', leglist)
                elif num4x2==0 and num2x2==0 and num2x1>0:
                        count= num2x1
                        leglist2= filter(lambda a: a != '2x1', leglist)
                elif num4x2==0 and num2x2>0:
                        count=num2x2  
                        leglist2= filter(lambda a: a != '2x2', leglist)
                else:
                        count=num4x2
                        leglist2= filter(lambda a: a != '4x2', leglist)
        if count>=q:
                print 'You can use',q,lego,'legos for this.'
        elif count<q:
                print  " I don't have",q,lego,'legos.' 
        print 
        print 'Current legos:',leglist2
legotype= raw_input('Type of lego wanted =>')
print legotype
quantity= input('Quantity wanted =>')
print quantity

print lego_work(legotype,quantity,legos)

您可以使用leglist.remove('2x1')从列表中删除其中一部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM