Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何获取列表的最小整数值_Python_List - Fatal编程技术网

Python 如何获取列表的最小整数值

Python 如何获取列表的最小整数值,python,list,Python,List,我有一个名为weight的变量,它是一个充满int值的列表。在循环的每一轮之后,我想要么隐藏当前最小值,要么用“o”替换它,这样我就可以找到下一个最小值权重=[4,2,4,1,3,5,6,2,3]将变成[4,2,4,'o',3,5,6,2,3]。。我遇到的问题是,当循环进行第二次运行时,它产生了一个错误,因为添加了“o” def greedyMinWt(): weight = [4,2,4,1,3,5,6,2,3] value = [7,9,9,8,5,8,3,5,2]

我有一个名为
weight
的变量,它是一个充满int值的列表。在循环的每一轮之后,我想要么隐藏当前最小值,要么用“o”替换它,这样我就可以找到下一个最小值<例如,代码>权重=[4,2,4,1,3,5,6,2,3]将变成
[4,2,4,'o',3,5,6,2,3]
。。我遇到的问题是,当循环进行第二次运行时,它产生了一个错误,因为添加了“o”

def greedyMinWt():
    weight = [4,2,4,1,3,5,6,2,3]
    value = [7,9,9,8,5,8,3,5,2]
    itemPick = [4,2,4,1,3,5,6,2,3]
    val = 0
    weightCount = 0
    itemCounter = 0
    valueCount = 0
    totalWeight = 0
    totalValue = 0
    weightInput = -1
    pickedItems = []
    n=0
    capacity = 17

    print('Itm|' + ' Wt|' + ' Val' )
    for num in range(0,len(weight)):
        print('(' + str(num+1) + ')' + '\t ' + str(weight[num]) + '\t ' + str(value[num]))
    print('\nSolve by greedy min wt:')
    while totalWeight < capacity:
         minWt = min(weight)
         val = value[weight.index(min(weight))]
         totalWeight += minWt
         totalValue += val
         slackWt = capacity - totalWeight
         'Need to fix this so it will print out the correct pick'

         if totalWeight > capacity:
            totalWeight-= min(weight)
            totalValue -=val
            print('\n__Greedy min weight __ \nItems Picked: '+ ' #' + ' #'.join(pickedItems))
            print('Feasible' + '\t' + 'WeightCount:' + str(totalWeight) + '\tValueCount:' + str(totalValue) + '\n' + 'The capacity is:' + str(capacity))
            return None
         print('pick =' + str(weight.index(minWt)+1) + ' accumWt=' + str(totalWeight) + ' slackWt=' + str(slackWt) + ' accumVal=' + str(totalValue))
         weight[weight.index(min(weight))] = 'o'
         print(weight)
def greedyMinWt():
重量=[4,2,4,1,3,5,6,2,3]
值=[7,9,9,8,5,8,3,5,2]
itemPick=[4,2,4,1,3,5,6,2,3]
val=0
权重计数=0
itemCounter=0
valueCount=0
总重量=0
totalValue=0
权重输入=-1
pickedItems=[]
n=0
容量=17
打印('Itm |'+'Wt |'+'Val')
对于范围(0,len(权重))中的num:
打印('('+str(num+1)+')'+'\t'+str(weight[num])+'\t'+str(value[num]))
打印('\n按贪婪最小重量保存:')
当总重量<容量时:
最小重量=最小(重量)
val=值[重量指数(最小(重量))]
总重量+=最小重量
totalValue+=val
松弛重量=容量-总重量
'需要修复此问题,以便打印出正确的选择'
如果总重量>容量:
总重量-=最小(重量)
totalValue-=val
打印('\n_uuu贪婪最小重量\uuuuu拾取的项:'+'.'+'.'.'.'.join(pickedItems))
打印('可行'+'\t'+'权重计数:'+str(总权重)+'\tValueCount:'+str(总值)+'\n'+'容量为:'+str(容量))
一无所获
打印('pick='+str(weight.index(minWt)+1)+'acumwt='+str(totalWeight)+'slackWt='+str(slackWt)+'acumval='+str(totalValue))
重量[重量指数(最小(重量))]=“o”
打印(重量)

使用列表理解来提取整数:

min_weight = min([i for i in weight if str(i).isdigit()])

本例循环查看
权重
列表并提取最小值。它将该值放入
min\u weights
列表中。找到的值随后更改为
o

注意:如果存在重复的最小值,则使用
.index()
将第一个最小值替换为
o
。下次通过循环时,将找到重复项,将其添加到其他列表中,然后更改为
o

weight = [4,2,4,1,3,5,6,2,3]

min_weights = []
for x in range(len(weight)):
    min_weights.append(min(weight))
    weight[weight.index(min(weight))] = 'o'

print min_weights
print weight
这将产生以下结果:

[1, 2, 2, 3, 3, 4, 4, 5, 6]   # This is your minimum weights
['o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o']   # This is your weight list after the loop is complete

如果你想按从最小到最大的顺序查找列表中的所有元素,为什么不对其进行排序呢?因为我需要它按特定的顺序排列,我想这样做way@Crunch嘿,再一次,看看下面我的答案。基本上,我对字符串进行强制转换,看看它们是否是严格意义上的数值。好吧,为什么您对当前的实现如此执着?有很多更好的方法。这是我的老师想要的方法。这不是我要求的。我想知道为什么在用“o”替换最小值(重量)后出现错误。这并不能回答我的问题。再一次。通过上面的精确编码,我如何确保一旦我将当前最小值替换为“o”,就不会出现错误,并且能够继续查找最小值?