gpt4 book ai didi

Python 切片操作方法,我知道 Python 切片,但是如何使用内置切片对象呢?

转载 作者:IT老高 更新时间:2023-10-28 21:43:22 27 4
gpt4 key购买 nike

内置函数slice有什么用,如何使用?
我知道的 Pythonic 切片的直接方式 - l1[start:stop:step]。我想知道我是否有一个切片对象,那么我该如何使用它呢?

最佳答案

您可以通过调用 slice 来创建一个 slice,其字段与执行 [start:end:step] 表示法时使用的字段相同:

sl = slice(0,4)

要使用切片,只需将其作为索引传递到列表或字符串中:

>>> s = "ABCDEFGHIJKL"
>>> sl = slice(0,4)
>>> print(s[sl])
'ABCD'

假设您有一个包含固定长度文本字段的文件。您可以定义一个切片列表,以便轻松地从该文件中的每个“记录”中提取值。

data = """\
0010GEORGE JETSON 12345 SPACESHIP ST HOUSTON TX
0020WILE E COYOTE 312 ACME BLVD TUCSON AZ
0030FRED FLINTSTONE 246 GRANITE LANE BEDROCK CA
0040JONNY QUEST 31416 SCIENCE AVE PALO ALTO CA""".splitlines()


fieldslices = [slice(*fielddef) for fielddef in [
(0,4), (4, 21), (21,42), (42,56), (56,58),
]]
fields = "id name address city state".split()

for rec in data:
for field,sl in zip(fields, fieldslices):
print("{} : {}".format(field, rec[sl]))
print('')

# or this same code using itemgetter, to make a function that
# extracts all slices from a string into a tuple of values
import operator
rec_reader = operator.itemgetter(*fieldslices)
for rec in data:
for field, field_value in zip(fields, rec_reader(rec)):
print("{} : {}".format(field, field_value))
print('')

打印:

id : 0010
name : GEORGE JETSON
address : 12345 SPACESHIP ST
city : HOUSTON
state : TX

id : 0020
name : WILE E COYOTE
address : 312 ACME BLVD
city : TUCSON
state : AZ

id : 0030
name : FRED FLINTSTONE
address : 246 GRANITE LANE
city : BEDROCK
state : CA

id : 0040
name : JONNY QUEST
address : 31416 SCIENCE AVE
city : PALO ALTO
state : CA

关于Python 切片操作方法,我知道 Python 切片,但是如何使用内置切片对象呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3911483/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com