繁体   English   中英

增加列表的所有元素,除了 Python 中的第一个元素

[英]Increase all elements of a list except the first one in Python

我有一个列表T1 我想将T1的所有元素都增加1 ,但第一个元素除外。 我该怎么做?

T1=[0,1,2,3,4,5,6,7]
T2=[i+1 for i in T1]

当前的 output 是

T2= [1, 2, 3, 4, 5, 6, 7, 8]

预期的 output 是

T2= [0, 2, 3, 4, 5, 6, 7, 8]

使用切片!

T1 = [0,1,2,3,4,5,6,7]
T2 = [T1[0]] + [i+1 for i in T1[1:]]

或者,使用enumerate

T1 = [0,1,2,3,4,5,6,7]
T2 = [x+(i>0) for i, x in enumerate(T1)]

Output:

[0, 2, 3, 4, 5, 6, 7, 8]

您可以将第一个元素与 rest 分开,并将 rest 增加 1 -

first, *rest = t1
t2 = [first] + [(i + 1) for i in rest]

或者您可以enumerate您的列表并使用索引 -

t2 = [(val + 1) if idx > 0 else val for (idx, val) in enumerate(t1)]

正确的答案是将 T1 列表一分为二,您不想修改的部分和您要做的部分。 之后将它们组合起来:

T1=[0,1,2,3,4,5,6,7]
T2= T1[0:1] + [i+1 for i in T1[1:]]

有几种方法,其中2种

T2 = [T1[0]] + [ j+1 for j in T1[1:]]

更长但更有趣的

T2 = [x+y for x,y in zip(T1, [0] + [1]*(len(T1)-1))]

或者只是一个带索引的 for 循环,因此您可以决定在哪个索引中操作

T2 = list()
for i,el in enumerate(T1):
    if i == 0:
        T2.append(el)
    else:
        T2.append(el+1)

玩得开心

我试过这个:

给定:

t1 = [0, 1, 2, 3, 4]

t2列表可以计算如下:

t2 = t1[0:1] + [v + 1 for i, v in enumerate(t1) if i != 0]

列表连接的第一部分是一个列表:事实上,如果你尝试t1[0] ,你会得到一个TypeError ,因为不可能将intlist连接起来。

我会这样做:

for i in range(1,len(T1)):   
  T1[i]=T1[i]+1

这不会创建新列表,但会更改当前列表中的值

在 if else 条件下使用的相对简单的答案。

T1=[0,1,2,3,4,5,6,7]
T2 = [x+1 if i>0 else x for i, x in enumerate(T1)]
# Output:
[0, 2, 3, 4, 5, 6, 7, 8]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM