我被要求接受整数列表(x),在列表中添加第一个值和最后一个值,然后返回带和的整数。我已经使用以下代码来做到这一点,但我遇到的问题是,当我尝试评估总和时,它实际上是一个项目列表而不是整数。我试图将它转换为int但我似乎无法让它工作。
def addFirstAndLast(x):
lengthOfList = len(x)
firstDigit = x[0:1]
lastDigit = x[lengthOfList:lengthOfList-1]
sum = firstDigit + lastDigit
return sum
答案 0 :(得分:16)
您正在切换返回列表的列表。在这里,您应该使用索引:
firstDigit = x[0]
lastDigit = x[-1]
执行x[0:1]
后,您将从列表开头的项目列表转到第一个时间间隔。
item0, item1, item2, item3
^ interval 0
^ interval 1
^ interval 2
^ interval 3
例如,执行x[0:2]
将返回项目0和1。
答案 1 :(得分:4)
这一切归结为:
def addFirstAndLast(x):
return x[0] + x[-1]
在Python中,否定列表索引意味着:从左侧开始从列表右侧开始索引,其中从右到左的第一个位置是-1
,第二个位置是{{1最后一个位置是-2
。
答案 2 :(得分:4)
def addFirstAndLast(x):
return x[0] + x[-1]
x [0] =将为您提供列表的 th 索引,第一个值。
x [-1] =将为您提供列表的最后元素。
答案 3 :(得分:1)
我只是在这里为那些像我一样在列表推导过程中挣扎的人添加一个特殊情况,这会返回一个列表。 @Thomas Orozco的回答救了我。这是一个简单的示例:
mylist=[1,5,6]
[el for el in mylist if el==5]
>> [5] #returns a *list* containing the element -- not what I wanted
添加下标将从列表中提取元素。
[el for el in mylist if el==5][0]
>> 5 #returns the element itself
如果希望将多个元素作为元组(而不是列表)返回,则可以将整个语句括起来:
tuple([el for el in l if (el==5 or el==6)])