切字符串作为列表的输入

时间:2019-03-23 05:29:27

标签: python list

我有一个列表:

my_list = [6, 9, 12]

我有一个字符串:

my_string = "The quick brown fox jumps over the lazy dog."

我想这样切成字符串:

my_string[:6]
my_string[6:9]
my_string[9:12]
my_string[12:]

请注意,切片范围是my_list的元素。

输出:

The qu
ick
 br
own fox jumps over the lazy dog.

或进入列表。但是,我正在努力进行切片的算法。

5 个答案:

答案 0 :(得分:2)

使用zip并切片。通过应用my_list和slice之前在开头添加0来修改zip

my_list = [6, 9, 12]
my_string = "The quick brown fox jumps over the lazy dog."

my_list = [0] + my_list
for x, y in zip(my_list, my_list[1:]):
    print(my_string[x: y])

print(my_string[my_list[-1]:])

# The qu
# ick                                                          
# br                                                         
# own fox jumps over the lazy dog.

或者更确切地说,如果出于某些原因需要更改my_list,请在此处使用单独的变量:my_list1 = [0] + my_listfor x, y in zip(my_list1, my_list1[1:]):

答案 1 :(得分:2)

我的解决方案

L=[0]+my_list+[len(my_string)]
for a in range(len(L)-1):
    print(my_string[L[a]:L[a+1]])

答案 2 :(得分:1)

my_list = [6, 9, 12]
my_string = "The quick brown fox jumps over the lazy dog."
start = 0
for end in my_list:
    print(my_string[start:end])
    start = end
print(my_string[end:])

为我工作...

答案 3 :(得分:0)

这根据所需的输出进行了

my_list = [6, 9, 12]

my_string = "The quick brown fox jumps over the lazy dog."

resultstring = ''

temp = 0

for i in range(0,len(my_list)):
    resultstring+=my_string[temp:my_list[i]]
    resultstring+='\n'
    temp = my_list[i]

resultstring+=my_string[temp:]

print resultstring

输出:

The qu
ick
 br
own fox jumps over the lazy dog.

答案 4 :(得分:0)

您可以编写一个返回生成器的函数,以在需要显示结果的任何地方使用。

def slice_string_by(my_string, my_list):
  memo = 0
  for idx in my_list:
    size = idx - memo
    chunck = my_string[0:size]
    yield chunck
    my_string = my_string[size:]
    memo = idx
  yield my_string


然后,您可以调用:

res = slice_string_by(my_string, my_list)

结果是生成器,转换为您得到的列表:

list(res) #=> ['The qu', 'ick', ' br', 'own fox jumps over the lazy dog.']


或者,您可以对其进行迭代以打印元素:

for chunk in slice_string_by(my_string, my_list):
  print(chunk)

# The qu
# ick
#  br
# own fox jumps over the lazy dog.