列表和字符串
List and Strings
我是 Python 的新手。你能帮我解释一下吗:
>>> list2 = [1, 2, 3]
>>> print(list2[1:-1])
[2]
>>> print(str(list2)[1:-1])
1, 2, 3
为什么list转成string后切片结果不一样?
字符串也是可以切片的可迭代对象:
>>> "abcde"[1:-1]
'bcd'
而列表的字符串表示就是列表的元素,用逗号分隔,用括号括起来:
>>> str(list2)
'[1, 2, 3]'
因此,当您删除 † 可迭代字符串 "[1, 2, 3]"
中的第一个和最后一个条目时,您会得到字符串 "1, 2, 3"
(不是,因为它当你 print
时会出现,列表):
>>> str(list2)[1:-1]
'1, 2, 3'
†请记住,在 Python 中,您可以使用负数索引从 last 条目开始工作在第一个可迭代对象中,所以 [1:-1]
等同于 [1:len(iterable) - 1]
。也就是说,从 second 到倒数第二个
的每个元素
切片适用于您正在切片的序列中的各个元素,返回一个与您切片的类型相同的包含所选元素的新对象。
您的列表包含整数,切片会生成一个包含所选整数的新列表。一个字符串包含 个字符 ,因此对一个字符串进行切片会生成一个包含所选字符的新字符串。
您的列表仅包含 3 个元素(整数 1
、2
和 3
),而您的字符串包含更多元素,即字符 '['
、 '1'
、' '
(一个space)、','
(一个逗号)、'2'
、' '
、','
等。 , 一直到最后的 ']'
。请注意,这些元素不是整数,,
字符没有特殊含义,space 也算作字符。该字符串总共包含9个字符。
因此,当您对列表进行切片并删除第一个和最后一个元素时,只剩下一个元素,即整数 2
。但是对字符串进行切片会删除 '['
(第一个字符)和 ']'
,留下剩余的字符串 '1, 2, 3'
,总共 7 个字符。
如果让解释器回显这些对象(而不是使用 print()
)可能会更清楚:
>>> list2 = [1, 2, 3]
>>> list2
[1, 2, 3]
>>> len(list2)
3
>>> str(list2)
'[1, 2, 3]'
>>> len(str(list2))
9
>>> list2[1:-1]
[2]
>>> len(list2[1:-1])
1
>>> str(list2)[1:-1]
'1, 2, 3'
>>> len(str(list2)[1:-1])
7
请注意字符串对象周围的 '
引号。
[1:-1]
表示从第一个元素切片到倒数第二个元素。直接切片list2
时,去掉了第一个和最后一个元素(1和3),剩下的就是中间的元素[2]
.
在python中,字符串也被认为是可迭代的;每个字符都可以被认为是一个元素。 list2
的字符串形式是 '[1, 2, 3]'
。因此,当您删除第一个和最后一个字符(左括号和右括号)时,您将留下子字符串 '1, 2, 3'
.
我是 Python 的新手。你能帮我解释一下吗:
>>> list2 = [1, 2, 3]
>>> print(list2[1:-1])
[2]
>>> print(str(list2)[1:-1])
1, 2, 3
为什么list转成string后切片结果不一样?
字符串也是可以切片的可迭代对象:
>>> "abcde"[1:-1]
'bcd'
而列表的字符串表示就是列表的元素,用逗号分隔,用括号括起来:
>>> str(list2)
'[1, 2, 3]'
因此,当您删除 † 可迭代字符串 "[1, 2, 3]"
中的第一个和最后一个条目时,您会得到字符串 "1, 2, 3"
(不是,因为它当你 print
时会出现,列表):
>>> str(list2)[1:-1]
'1, 2, 3'
†请记住,在 Python 中,您可以使用负数索引从 last 条目开始工作在第一个可迭代对象中,所以 [1:-1]
等同于 [1:len(iterable) - 1]
。也就是说,从 second 到倒数第二个
切片适用于您正在切片的序列中的各个元素,返回一个与您切片的类型相同的包含所选元素的新对象。
您的列表包含整数,切片会生成一个包含所选整数的新列表。一个字符串包含 个字符 ,因此对一个字符串进行切片会生成一个包含所选字符的新字符串。
您的列表仅包含 3 个元素(整数 1
、2
和 3
),而您的字符串包含更多元素,即字符 '['
、 '1'
、' '
(一个space)、','
(一个逗号)、'2'
、' '
、','
等。 , 一直到最后的 ']'
。请注意,这些元素不是整数,,
字符没有特殊含义,space 也算作字符。该字符串总共包含9个字符。
因此,当您对列表进行切片并删除第一个和最后一个元素时,只剩下一个元素,即整数 2
。但是对字符串进行切片会删除 '['
(第一个字符)和 ']'
,留下剩余的字符串 '1, 2, 3'
,总共 7 个字符。
如果让解释器回显这些对象(而不是使用 print()
)可能会更清楚:
>>> list2 = [1, 2, 3]
>>> list2
[1, 2, 3]
>>> len(list2)
3
>>> str(list2)
'[1, 2, 3]'
>>> len(str(list2))
9
>>> list2[1:-1]
[2]
>>> len(list2[1:-1])
1
>>> str(list2)[1:-1]
'1, 2, 3'
>>> len(str(list2)[1:-1])
7
请注意字符串对象周围的 '
引号。
[1:-1]
表示从第一个元素切片到倒数第二个元素。直接切片list2
时,去掉了第一个和最后一个元素(1和3),剩下的就是中间的元素[2]
.
在python中,字符串也被认为是可迭代的;每个字符都可以被认为是一个元素。 list2
的字符串形式是 '[1, 2, 3]'
。因此,当您删除第一个和最后一个字符(左括号和右括号)时,您将留下子字符串 '1, 2, 3'
.