我有2个列表:其中1个是列表列表。它们如下 -
lists_of_lists = ['1', '4', '7', '13', '16', '21', '32', '36'],['3', '6', '8', '14', '22', '26', '31', '40']
just_a_list =['THEQUICKBROWNFOXJUMPEDOVERTHELAZYDOG', 'IWOULDLOVETOGETOVERWITHTHISASSOONASPOSSIBLE']
lists_of_lists用于切片just_a_list的元素,以便:
['1', '4', '7', '13', '16', '21', '32', '36']
将对字符串'THEQUICKBROWNFOXJUMPEDOVERTHELAZYDOG'
进行切片,如下所示
'1' - '4' - 'HEQU'
'7' - '13' - 'KBROWNF'
'16' - '21' - 'JUMPED'
'32' - '36' - 'ZYDOG'
指出 -
list_of_lists
中的每个列表都会有偶数个数字。
i'th
中list_of_lists
位置的列表属于。{1}} 字符串出现在i'th
的{{1}}位置。
请帮助我了解如何执行上述过程。
由于
答案 0 :(得分:5)
使用zip()
组合字符串和切片列表,然后使用zip()
加iter()
技巧配对起始值和结束值:
for slicelist, text in zip(lists_of_lists, just_a_list):
for start, stop in zip(*([iter(slicelist)]*2)):
print(text[int(start):int(stop) + 1])
请注意,我们必须将 1添加到停止索引,因为您似乎需要包含它,而在Python中,停止索引是独占的。
这给出了:
>>> for slicelist, text in zip(lists_of_lists, just_a_list):
... for start, stop in zip(*([iter(slicelist)]*2)):
... print(text[int(start):int(stop) + 1])
...
HEQU
KBROWNF
JUMPED
YDOG
ULDL
VETOGET
HTHIS
ONASPOSSIB
答案 1 :(得分:0)
如果我理解你的话:
>>> ls = just_a_list =['THEQUICKBROWNFOXJUMPEDOVERTHELAZYDOG', 'IWOULDLOVETOGETOVERWITHTHISASSOONASPOSSIBLE']
>>> ls[0]
'THEQUICKBROWNFOXJUMPEDOVERTHELAZYDOG'
# so we do
# your index was off by one
>>> ls[0][1:5]
'HEQU'
>>> ls[0][7:14]
'KBROWNF'