我有一个整数列表,我想打印一个列表,其中包含例如列表中k个元素,具体取决于“k”值。
例如,如果k = 4,这意味着我将要打印的列表将在列表中包含4个元素。对于k = 5,列表中的5个元素等
这是我的代码:
listA = [9,-2,6,1,80,9,-2]
def findMinimum(l):
if len(l) == 1:
return l[0]
else:
minNumber = findMinimum(l[1:])
minimumVal = l[0]
if minNumber<minimumVal:
minimumVal = minNumber
return minimumVal
def listMin(k,l):
temp = []*k
for i in range(len(l)-1):
minVal = findMinimum(l)
temp.append(minVal)
for item in temp:
if item in l:
l.remove(item)
print(temp)
listMin(4,listA)
第一个功能定义在列表中找到最小值并返回最小值。
第二个功能有2个参数,即k值和列表。 k值是要返回的列表的大小,我遇到了问题。每当获得最小值并将其附加到临时列表中时,它从列表A 中删除,然后继续获取列表中的下一个最小数字{{1 }}
输出的一个例子是当k = 4时,因此列表中将包含四个元素:
A
我写的代码在列表中给了我6个元素而不是4:
[-2,-2,1,6]
我猜我的错误是temp = [] * k。
答案 0 :(得分:1)
首先。你不需要手工编写函数来在python中找到最小值。有内置的min 第二。如果您希望您的程序在数据结构内部运行多个值,则在大多数情况下操作&#34;一次性运行&#34;是个好主意。 根据你的代码:
所以,你最终可以
sorted(listA)[:k]
通过&#34;逐个&#34;来实现相同的结果。你可以做的操作
k
次哪个看起来像
result = []
for _ in range(k):
value = min(ListA)
listA.remove(value)
result.append(value)
答案 1 :(得分:0)
你使问题复杂得多:
l = [9,-2,6,1,80,9,-2]
k = 4
n = []
while k > 0:
m = min(l)
n.append(m)
l.remove(m)
k -= 1
print n
>> [-2, -2, 1, 6]
答案 2 :(得分:0)
这一行:
for i in range(len(l)-1):
应更改为:
for i in range(k):