我似乎无法弄清楚如何从列表中取出前2个。这是问题,我需要帮助。
编写一个函数,当给定任意数量的项目列表时,返回列表中缺少第一个字母的前两个项目。如果列表没有两个项目,则函数返回"此列表少于两个项目。"
答案 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项