2015-03-13 45 views
0

我有以下代码,它使列表(lst)的副本(cpy),在特定位置(i)插入给定元素(e),然后将其添加另一个表(RLST):使用在Python中插入的元素复制列表

 cpy = lst[:] 
     cpy.insert(i,e) 
     rlst.append(cpy) 

是有这样做的更优雅的方式,这将导致一个班轮?是这样的:

rlst.append("Some code here") 
+1

你正在做3个动作,每个动作都需要*只有*一行。在一行中执行多个操作是不好的做法:它会使代码不易读,以及在发生错误时更难调试。你有没有听说过[KISS原则](http://en.wikipedia.org/wiki/KISS_principle)? – alfasin 2015-03-13 17:49:02

+0

@alfasin:这就是为什么人们更喜欢用汇编代码编写代码,而不是那些允许任意复杂的表达式的不可读的现代语言;-) – 2015-03-13 18:01:29

+0

@alfasin:这也是我的想法,但是单行代码的结果是非常可读。我实际上比原来更快地理解单线。 – 2015-03-13 18:05:11

回答

2

这里就是一个一行不伤害可读性的情况下:

rlst.append(lst[:i] + [e] + lst[i:]) 
+0

是的,这样做,谢谢, – 2015-03-13 19:02:11

-1

如果你想要做的列表理解,你可以这样做: (i为所需的索引,e = value)

rlst.append([y if x is not i else e for x,y in enumerate(cpy)]) 
+0

不完全。插入不会覆盖索引。 (Downvote是因为代码有问题。) – 2015-03-13 17:55:05

+0

除此之外,我怀疑'x不是'我是否适用于大于255的索引。 – 2015-03-13 18:07:57