[英]How do I make an elif command which occurs in a for loop only register for certain instances of an item within the list?
[英]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.