根据列表大小打印包含元素的列表

时间:2017-06-14 15:13:13

标签: python list

我有一个整数列表,我想打印一个列表,其中包含例如列表中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。

3 个答案:

答案 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):