Py学习  »  Python

为什么在python中使用x=list[0:8]创建list是错误的?

nilsinelabore • 6 年前 • 2302 次点击  

为什么用这个创建一个列表是错误的?

x = list[0:8]

要在两个值之间创建一个列表,这是唯一的方法吗?

list(range(0, 8))

谢谢

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/51178
文章 [ 4 ]  |  最新文章 6 年前
pennine
Reply   •   1 楼
pennine    6 年前
x = list[0:8]

使用此语法拼接现有的列表,命名为 list 并将其分配给变量 x ,实际上不会生成新列表。如果你没有 列表 定义了,你会得到一个异常。

Ari
Reply   •   2 楼
Ari    6 年前

试试看:

x = list[0:8]
print(x)

结果:

Traceback (most recent call last):
  File "script.py", line 1, in <module>
    x = list[0:8]
TypeError: 'type' object is not subscriptable

这是错误的,因为它不起作用。你用 [x:x] 从列表中选择项目片段,而不是生成列表。你可以使用范围,或者使用列表理解。

x = list(x for x in range(0, 100))
print(f"There are {len(x)} items in the list")

结果

"There are 100 items in the list"

把它切成片,最后50个项目, [50:] 表示我们从第50个索引开始,在 : 意思是一直走到最后。相反地你可以做 [:80] 它会从一开始上升到第80个指数,这和 [0:80] .

half = x[50:]
print(f"There are {len(half )} items in the list")

结果

"There are 50 items in the list"
Grismar
Reply   •   3 楼
Grismar    6 年前

这是错误的,因为它没有给你想要的结果。

如果你写这个:

x = list[0:8]

您正在告诉Python:调用现有变量 list ,选择第0个元素到第8个元素(即前8个元素,列表从0开始),并将结果赋给变量 x .

这个 [0:8] 部分被称为“slice”,它适用于可以通过索引访问的许多类型的变量。当你把切片应用到 列表 ,Python将其解释为可索引的,并尝试“切片”它-除非您真正定义了一个名为 列表 ,不建议使用此选项,因为它将 列表 是标准Python的类型。

你没有告诉Python:生成从0到7的数字,把它变成一个列表,并将结果赋给变量 ,也就是说:

x = list(range(0, 8))

请注意,这对大多数情况都足够了,但它不会给您一个列表,而是范围本身,因此,如果您确实需要一个列表,请不要这样做:

x = range(0, 8)
Ravi Satya Yenugula
Reply   •   4 楼
Ravi Satya Yenugula    6 年前

@尼尔辛拉布, [x:y] 意思是将列表从索引X切片到Y-1,如果列表存在,则只能对其进行切片。