Python 冒号不是数字序列?

Python colon not a sequence of numbers?

在r代码中,1到4的整数序列:

1:4

如何在 python 3 中复制它?用例是使用 iloc:

从 pandas 数据帧中进行选择
df.iloc[1:4]

在 Python 中,为了生成数字范围,请使用函数 range

range(1, 5)

这将生成从 14 的数字。如果你在Python2,range会给你一个列表,如果你在Python3,它会给你一个range对象。

如果您在 Python 3 中,并且您想要一个列表,只需使用 list 函数将您的范围转换为列表

>>> list(range(1, 5)
[1, 2, 3, 4]

使用 range(1, 5) 为您提供从 1 到 4(包括两者)的整数集

您可以使用

mylist=list(range(1,5))
print(mylist)

list() 将给定范围对象转换为列表

要生成从 1 到 4(含)的数字范围,请使用:range(1, 5)range(1, 4+1)

需要注意的几点:

  • 代码 range(x, y) 生成的范围从(包括)x 到(但 包括)y.如果你想包含 y,加 1(就像我上面做的那样)。

  • range(x, y) 在 Python 2 与 Python 3 中的工作方式略有不同。我不会在这里详细介绍,但我建议使用 Python 3(希望您已经在使用)。

  • range(x) 将生成从(包括)零到(但 包括)x 的范围。所以range(x)range(0, x)基本一样。

  • range函数会生成一个range对象;也就是说,它实际上并没有创建 xy 之间所有整数的 list。如果您确实想要 xy 之间的整数 list,请使用此代码:

    some_list = list(range(x, y))
    

但是,如果您希望从顺序容器中提取一部分值,这可能会奏效:

from itertools import islice
values = islice(df.iloc, 1, 5)  # returns an iterator
values = list(values)  # extracts the values from the iterator into a list

Python 的切片语法不会生成整数范围;它产生一个或多个 slice 对象,这些对象被传递给适当类型的 __getitem__ 方法。也就是说,

df.iloc[1:4]

相当于

def.iloc[slice(1,4)]

df.iloc.__getitem__(slice(1,4))