从列表中删除前2个项目

时间:2017-09-27 01:12:48

标签: python python-3.x

我似乎无法弄清楚如何从列表中取出前2个。这是问题,我需要帮助。

编写一个函数,当给定任意数量的项目列表时,返回列表中缺少第一个字母的前两个项目。如果列表没有两个项目,则函数返回"此列表少于两个项目。"

5 个答案:

答案 0 :(得分:3)

def somefun(list):
    if len(list) < 2:
        return "This list has less than two Items"
    else:
        first_item = list.pop(0)
        second_item = list.pop(0)
        return "First Item: {}\nSecond Item: {}".format(first_item,second_item)

您可以弹出列表中的项目。

使用pop时,它会删除列表中的项目和项目。剩下的就转移了。

例如,请按以下列表:

list = [1,2,3,4]

索引0处的数字是1,索引1处的数字是2,当我使用pop(0)并提供索引时,它会删除该数字,因此在这种情况下它会删除1,并且数字会被移位,所以索引0是2,索引1是3等。

答案 1 :(得分:1)

def somefun(list):
    if len(list) < 2:return "This list has less than two Items"
    else:
        first_item = list[0]
        second_item = list[1]
        del list[1]
        del list[0]
        return "First Item: {}\nSecond Item: {}".format(first_item,second_item)

这很简单,检查len是否小于2,如果不是那么删除2个第一项并返回它们......

另外我猜我完全不理解你的问题,(返回列表中的前两个项目,错过了他们的第一个字母)?如果这是您想要的,那么在最后一行而不是format.(first_item,second_item),您需要使用format(first_item[1:],second_item[1:]

答案 2 :(得分:0)

使用列表切片和列表理解的另一种解决方案

Select * from dbo.TABLE 
WHERE [IDField] IN (
  CASE 
    WHEN ISNULL(@mID, 0) > 0 THEN @mID 
    ELSE 1,2,3 
  END
)

输出:

items = ['a','b','c','d']

print("\n".join(map(str,items[0:2])) if len(items)>=2 else 'List has less than 2 elements')

答案 3 :(得分:0)

假设missing their first letter,你的意思是这些项目不是以ASCII字母开头的(很难说你是否意味着 - 但如果是这样的话),那么这可能是一个起点你:

from string import ascii_letters as letters

out = []
def aFunc(aList):
   if len(aList) < 2: return ['This list has less than two items.',]

   for s in aList:
      s[0] not in letters and out.append(s)
      if len(out) == 2: break

   res = out if len(out) == 2 else ['This list has less than two items.',]
   return res

我将“异常字符串”包含在一个项目列表中,这样您就不必对返回的结果执行类型检查:它将是一个列表,事实上,如果它是长度-2然后你有你的物品;如果它是长度为1,那么它将只包含你的“激发字符串”。

答案 4 :(得分:0)

让列表按名称列表创建,而不是从列表中删除前两项(前提是它至少包含两个内容而不是代码:

list.remove(list[0])      #for first item
list.remove(list[0])      #for second item

简单和短代码从列表中删除前2项