Python附加到列表或忽略
我想制作一个数组,如下所示:Python附加到列表或忽略,python,list,Python,List,我想制作一个数组,如下所示: for i in range(0, len(final), 3): ar.append( ( final[i] + 100, final[i+1] + 100, final[i+2] + 100 ) ) 但有一个简单的问题。final的长度约为2682715,当2682714使用step=3 final[2682714] = OK final[2
for i in range(0, len(final), 3):
ar.append(
(
final[i] + 100,
final[i+1] + 100,
final[i+2] + 100
)
)
但有一个简单的问题。final的长度约为2682715,当2682714
使用step=3
final[2682714] = OK
final[2682715] = OK
final[2682716] = ERROR
我怎么办?我们可以使用try/except索引器
,但整个项目将被忽略
final = range(31)
ar = []
for i in range(0, len(final), 3):
ar.append(tuple(final[i:i+3]))
print(ar)
输出:
[(0, 1, 2), (3, 4, 5), (6, 7, 8), (9, 10, 11), (12, 13, 14), (15, 16, 17), (18,
19, 20), (21, 22, 23), (24, 25, 26), (27, 28, 29),(30,)]
列表长度可以被3整除-最后一个元素将是最后一个三元组,而不是只有一个元素的元组
我的元组在没有休息的情况下不能被3整除,因此我在末尾有一个不完整的元组
使用列表理解元组(final[i:i+3])
将确保您不会超出final
的边界,剩余的1
或2
数字位于最后一个元组中。您可以使用列表理解:
final = (1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15)
ar = []
ar = [final[i:i + 3] for i in range(0, len(final), 3)]
print(ar)
输出:
[(1, 2, 3), (4, 5, 7), (8, 9, 10), (11, 12, 13), (14, 15)]
切片很好,一行添加一个zip
a = [*range(9)]
[*zip(a[::3], a[1::3], a[2::3])]
Out[321]: [(0, 1, 2), (3, 4, 5), (6, 7, 8)]
zip
自动删除不构成三元组的额外元素ar的最后一个元素应该是什么(final[2682714],final[2682715])
final[2682715]
@joren485“整个项目将被忽略”是什么意思?我想要最后两个项目,除了在SeppeMariënote将被忽略之外,列表(范围(31))
实际上没有必要,因为range
对象是支持len
和切片的序列……好吧,这很好。。。但是如果我想加上一些数字呢?例如,final[i]+100,final[i+1]+100,final[i+2]+100
在这种情况下我们不能使用元组。。。有可能吗?@ArashHatami在你的问题中没有具体说明。你想给每一个都添加相同的常数吗?@ArashHatamiar.append(tuple([x+100代表x在final[i:i+3]])
这是0+每3
,每3跳过1+每3
,跳过2+每3
并压缩?Neati更新了我的答案,它现在会给你最后的项目