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

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

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

4

3 回答 3

8

您可以使用这一衬里:

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

它返回所需的列表:

[7, 9, 10, 11]
于 2012-04-13T10:26:03.677 回答
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

编辑以反映问题的变化)。

于 2012-04-13T10:29:45.707 回答
1

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

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

将工作

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

选项1:

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

选项 2:

for lid in itertools.chain([7],range(9,len(row))):
于 2012-04-13T10:46:29.613 回答