在一行中创建和扩展列表

时间:2012-04-13 10:22:49

标签: python python-3.x

mylist=[]
mylist.append(7)
mylist.extend(range(9,12))

这样的事情可以在一行在python 3 中完成吗?

我认为这应该是微不足道的,但由于某种原因,我不记得也找不到如何做到这一点。

3 个答案:

答案 0 :(得分:8)

你可以使用这个衬垫:

mylist = [7] + list(range(9,12))

返回所需的列表:

[7, 9, 10, 11]

答案 1 :(得分:2)

您可以将任何内容添加到列表构造函数中。例如:

mylist = [7]

或者:

mylist = list(range(9,12))

或者,将两者连在一起:

mylist = [7] + list(range(9,12))

对于更复杂的构造,列表推导是可行的方法。例如:

mylist = [ (irow,icol) for irow in range(1,10) for irow in range(1,10) if i > j ]

有关列表推导的更多信息,请访问: http://docs.python.org/tutorial/datastructures.html#list-comprehensions

已编辑以反映问题中的更改)。

答案 2 :(得分:1)

如果您正在使用Python 2. *,正如其他人所说的那样

for lid in [7] + range(9,len(row)):

将起作用

如果使用Python 3. *,因为range现在返回一个迭代器,你需要显式转换为list

选项1:

for lid in [7] + list(range(9,len(row))):

选项2:

for lid in itertools.chain([7],range(9,len(row))):