在Python中替换列表的多个非切片特定值[已关闭]

ar7v8xwq  于 2022-12-30  发布在  Python
关注(0)|答案(2)|浏览(100)

5小时前关门了。
Improve this question
假设我有两个变量a和b:
第一个月
b=[0,3,6,9,1,4,7,2,5,8]
我需要明确地把2、5和8从b中移走,用2、5和8替换它们各自位置上的-1,我还需要尽可能地压缩它们,以使程序运行得更快。
所期望的结果是
a==[0,1,2,3,4,5,6,7,8,9]
我能想到的最佳解决方案是:
a[2]=b[7]
a[5]=b[8]
a[8]=b[9]
然后,我想到使用以下代码来完成此操作:
a[2,5,8]=b[7,8,9]

a[2,5,8]=b[7:9]
但是,对于这两种情况,我都收到错误消息
TypeError: list indices must be integers or slices, not tuple
有没有什么方法可以把它压缩成一行,或者至少比我已经有的三行更简单的形式?

dfddblmv

dfddblmv1#

试试这个,看看是否对你有帮助:

注意-您不必对职位进行硬编码,这将为您提供更大的灵活性。

it = iter([2, 5, 8])        #  the numbers to change in

A = [0,1,-1,3,4,-1,6,7,-1,9]

A = [x if x != -1 else next(it)  for x in A]  # check condition & act accordingly 

print(A)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
c3frrgcw

c3frrgcw2#

a[2], a[5], a[8] = b[7], b[8], b[9]

a[2], a[5], a[8] = b[7:10]

相关问题