6.一个列表,里面都是整数,要求删除一个元素,使得剩余元素的乘积最大
现在要求找到这个待删除的元素
import random
#返回一个列表的所有项的乘积
def func(li):
i1 = 0#
#判断li的个项是否全为整数,全为整数的话,i1为len(li)
for i in range(len(li)):
if isinstance(li[i],int):
i1 += 1
#判断li里的各项是否全为整数,并且len(li)!=0是,执行操作,
#否,打印输入参数有误
if i1 == len(li) and len(li) != 0:
a = 1
for i in li:
a =a*i
return a
else:
print('输入参数有误,请重新输入')
def func2(li):
li2 =[]#存储删除的数和对应的乘积
i1 = 0#
#判断li的个项是否全为整数,全为整数的话,i1为len(li)
for i in range(len(li)):
if isinstance(li[i],int):
i1 += 1
#判断li里的各项是否全为整数,并且data也为整数,是,执行操作,
#否,打印输入参数有误
if i1 == len(li) and len(li)>=2:
#把要删除的元素和删除元素对应的列表乘积放入li2中
for i in range(len(li)):
li1 = li.copy()#复制列表li
a = li1.pop(i)#删除列表li1中的第i项,并把列表中删除的元素赋值给a
li2.append((a,func(li1)))#把删除的数和对应的乘积以元祖的形式放入li2中
li2.sort(key =lambda x:x[1],reverse = True)
li2[0][0]
return li2[0][0]
elif i1 == len(li) and len(li) == 1:
return li[0]
else:
print('输入参数错误,请重新输入')
for i in range(10):
#生成一个列表
li1 = [random.randint(-100,100) for i in range(4)]
print('列表:',li1)
print('待删除的元素:',func2(li1))
print()