在python中解释列表函数

我有这行代码,它将英语行中的英语单词(在这种情况下为弓箭手和弓箭手)放入列表中,并使用单词数的整数(在这种情况下为02)找出其中有多少个单词线


line = 09824747 18 n 02 archer 0 bowman 0 003 @ 09640897 n 0000 ~ 10290474 n 0000 ~ 10718145 n 0000

L = line.split()

word = L[4:4 + 2 * int(L[3]):2]

print(word)

打印出来 ['archer', 'bowman']


我想使用以另一种方式将单词分配给列表的代码行,我想将在'@'符号后出现的8位数字分配给其他列表。


到目前为止,我已经获得了获取文件中8位数字数量的代码以及我的努力。(在这种情况下,8位数字的数量为003)


pointer_num = re.findall(r'\b\d{3}\b', line)

K = int(pointer_num[0])

before_at, after_at = line.split('@')

S = after_at.split()[0:0 +3 * K:3]

S应该是8位数字的列表。尽管此代码将S输出为:


['09640897', '~', '0000']

这是正确的条目数,只是错误的条目数。如果有人可以解释,word = L[4:4 + 2 * int(L[3]):2]我应该可以自己更正


倚天杖
浏览 187回答 3
3回答

慕后森

L[4:4 + 2 * int(L[3]):2] 可以这样理解:L[3]返回列表中的第四个元素L(例如'02')。int(L[3])返回int字符串的L[3](例如2)。4 + 2 * int(L[3])返回int,例如4 + 2 * 2 = 8。L[4:8:2]返回一个由元素的列表L[4]通过L[7],由2跳过换句话说,[L[4], L[6]]。通常L[start:stop:skip]返回一个列表,该列表以开头L[start],恰好在之前结束L[stop]。可以将其[start, stop)视为半开间隔。最后一个数字skip,导致列表跳过此数目的元素。在此处的注释3,4,5中说明了有关Python切片如何对序列类型进行工作的完整规则。

小怪兽爱吃肉

L[3]是02。int(L[3]) 是 24 + 2 * int(L[3]) 是 8L[4:4 + 2 * int(L[3]):2]是L[4:8:2]指L从索引4到8排除索引中的项目,其步骤为2L[4]是'archer'和L[6]是'bowman'
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python