在Python中遍历列表中的元素范围

在Python中遍历列表中的元素范围,python,Python,我是Python的初学者,对遍历列表中的一系列元素有疑问 我有以下清单: ['0.95', '0.05', '0.94', '0.06', '0.29', '0.71', '0.001', '0.999'] 假设从第一个位置开始,我想迭代两个元素的范围:替换前两个,保持后两个不变,然后再次替换下两个: [-, -, '0.94', '0.06', -, -, '0.001', '0.999'] 我也希望能够从任何位置开始。例如,使用与前面相同的范围,但从第三个位置开始: ['0.95', '

我是Python的初学者,对遍历列表中的一系列元素有疑问

我有以下清单:

['0.95', '0.05', '0.94', '0.06', '0.29', '0.71', '0.001', '0.999']
假设从第一个位置开始,我想迭代两个元素的范围:替换前两个,保持后两个不变,然后再次替换下两个:

[-, -, '0.94', '0.06', -, -, '0.001', '0.999']
我也希望能够从任何位置开始。例如,使用与前面相同的范围,但从第三个位置开始:

['0.95', '0.05', -, -, '0.29', '0.71', -, -]

我尝试了使用三个参数的范围,但它只替换范围中的第一个位置,而不是范围中的所有元素。

将开始替换为所需的开始值

l = ['0.95', '0.05', '0.94', '0.06', '0.29', '0.71', '0.001', '0.999']

def subDashes(l, start):
    newL = []
    for index, elem in enumerate(l):
        if index%4 == start or index%4 == start+1:
            newL.append('-')
        else:
            newL.append(elem)
    return newL

>>> subDashes(l, 0)
['-', '-', '0.94', '0.06', '-', '-', '0.001', '0.999']

>>> subDashes(l, 1)
['0.95', '-', '-', '0.06', '0.29', '-', '-', '0.999']

>>> subDashes(l, 2)
['0.95', '0.05', '-', '-', '0.29', '0.71', '-', '-']
l = ['0.95', '0.05', '0.94', '0.06', '0.29', '0.71', '0.001', '0.999']


def dash(l,start):
    for i in range(start,len(l)):
        if (i - start) % 4 == 0 or (i - start) % 4 == 1:
            l[i] = '-'
    return l

print dash(l,start = 2)

将start替换为所需的启动值

l = ['0.95', '0.05', '0.94', '0.06', '0.29', '0.71', '0.001', '0.999']


def dash(l,start):
    for i in range(start,len(l)):
        if (i - start) % 4 == 0 or (i - start) % 4 == 1:
            l[i] = '-'
    return l

print dash(l,start = 2)

将start替换为所需的启动值

l = ['0.95', '0.05', '0.94', '0.06', '0.29', '0.71', '0.001', '0.999']


def dash(l,start):
    for i in range(start,len(l)):
        if (i - start) % 4 == 0 or (i - start) % 4 == 1:
            l[i] = '-'
    return l

print dash(l,start = 2)

将start替换为所需的启动值

l = ['0.95', '0.05', '0.94', '0.06', '0.29', '0.71', '0.001', '0.999']


def dash(l,start):
    for i in range(start,len(l)):
        if (i - start) % 4 == 0 or (i - start) % 4 == 1:
            l[i] = '-'
    return l

print dash(l,start = 2)

最简单,也是我认为最好的方法是:

seq = [1,2,3,4,5,6,7,8]

replace_list= ['-','-','-','-']

seq[::4] = replace_list[::2]
seq[1::4] = replace_list[1::2]

print seq
输出:

['-', '-', 3, 4, '-', '-', 7, 8]
[1, 2, 3, '-', '-', 6, 7, '-']
要在要启动的项目中启动,只需执行以下操作:

replace_list= ['-','-','-']

starting_item=3
seq[starting_item::4] = replace_list[::2]
seq[starting_item+1::4] = replace_list[1::2]
请注意,replace_list必须具有要在seq list中替换的元素的特定数量

输出:

['-', '-', 3, 4, '-', '-', 7, 8]
[1, 2, 3, '-', '-', 6, 7, '-']
如果要始终使用相同的值替换所有项目,可以执行以下操作:

starting_item=3

last_part = min((len(seq) - starting_item) % 4, 2)
size = ((len(seq) - starting_item)/4) * 2 + last_part
replace_list= ['-']*size

最简单,也是我认为最好的方法是:

seq = [1,2,3,4,5,6,7,8]

replace_list= ['-','-','-','-']

seq[::4] = replace_list[::2]
seq[1::4] = replace_list[1::2]

print seq
输出:

['-', '-', 3, 4, '-', '-', 7, 8]
[1, 2, 3, '-', '-', 6, 7, '-']
要在要启动的项目中启动,只需执行以下操作:

replace_list= ['-','-','-']

starting_item=3
seq[starting_item::4] = replace_list[::2]
seq[starting_item+1::4] = replace_list[1::2]
请注意,replace_list必须具有要在seq list中替换的元素的特定数量

输出:

['-', '-', 3, 4, '-', '-', 7, 8]
[1, 2, 3, '-', '-', 6, 7, '-']
如果要始终使用相同的值替换所有项目,可以执行以下操作:

starting_item=3

last_part = min((len(seq) - starting_item) % 4, 2)
size = ((len(seq) - starting_item)/4) * 2 + last_part
replace_list= ['-']*size

最简单,也是我认为最好的方法是:

seq = [1,2,3,4,5,6,7,8]

replace_list= ['-','-','-','-']

seq[::4] = replace_list[::2]
seq[1::4] = replace_list[1::2]

print seq
输出:

['-', '-', 3, 4, '-', '-', 7, 8]
[1, 2, 3, '-', '-', 6, 7, '-']
要在要启动的项目中启动,只需执行以下操作:

replace_list= ['-','-','-']

starting_item=3
seq[starting_item::4] = replace_list[::2]
seq[starting_item+1::4] = replace_list[1::2]
请注意,replace_list必须具有要在seq list中替换的元素的特定数量

输出:

['-', '-', 3, 4, '-', '-', 7, 8]
[1, 2, 3, '-', '-', 6, 7, '-']
如果要始终使用相同的值替换所有项目,可以执行以下操作:

starting_item=3

last_part = min((len(seq) - starting_item) % 4, 2)
size = ((len(seq) - starting_item)/4) * 2 + last_part
replace_list= ['-']*size

最简单,也是我认为最好的方法是:

seq = [1,2,3,4,5,6,7,8]

replace_list= ['-','-','-','-']

seq[::4] = replace_list[::2]
seq[1::4] = replace_list[1::2]

print seq
输出:

['-', '-', 3, 4, '-', '-', 7, 8]
[1, 2, 3, '-', '-', 6, 7, '-']
要在要启动的项目中启动,只需执行以下操作:

replace_list= ['-','-','-']

starting_item=3
seq[starting_item::4] = replace_list[::2]
seq[starting_item+1::4] = replace_list[1::2]
请注意,replace_list必须具有要在seq list中替换的元素的特定数量

输出:

['-', '-', 3, 4, '-', '-', 7, 8]
[1, 2, 3, '-', '-', 6, 7, '-']
如果要始终使用相同的值替换所有项目,可以执行以下操作:

starting_item=3

last_part = min((len(seq) - starting_item) % 4, 2)
size = ((len(seq) - starting_item)/4) * 2 + last_part
replace_list= ['-']*size


显示您尝试的代码将非常有帮助。@BatuDog88,当您说“替换”时,您的意思是用
-
替换它们,还是说,还有其他内容?事实上,我假装要删除这些元素(而不是替换它们),但在从列表中删除元素之前,我遇到了麻烦,在下一次迭代中,列表的大小不同,它并没有删除我想要的元素,所以我首先替换这些元素,然后从列表中删除所有“-”s。也许不是很有效,但它对我来说很有效。我上面的答案回答了如何以有效的方式替换这样的元素。但是,如果您只想删除,为什么不使用
a=[1,2,3,4,5,6,7,8]dela[starting_element::4]dela[starting_element::3]
?显示您尝试的代码会非常有帮助。@BatuDog88,当您说替换时,您的意思是用
-
替换它们还是,还有别的吗?事实上,我假装要删除这些元素(不是替换它们),但在从列表中删除元素之前我遇到了麻烦,因为在下一次迭代中,列表大小不同,并且没有删除我想要的元素,所以我先替换这些元素,然后从列表中删除所有“-”s。也许不是很有效,但它对我来说很有效。我上面的答案回答了如何以有效的方式替换这样的元素。但是,如果您只想删除,为什么不使用
a=[1,2,3,4,5,6,7,8]dela[starting_element::4]dela[starting_element::3]
?显示您尝试的代码会非常有帮助。@BatuDog88,当您说替换时,您的意思是用
-
替换它们还是,还有别的吗?事实上,我假装要删除这些元素(不是替换它们),但在从列表中删除元素之前我遇到了麻烦,因为在下一次迭代中,列表大小不同,并且没有删除我想要的元素,所以我先替换这些元素,然后从列表中删除所有“-”s。也许不是很有效,但它对我来说很有效。我上面的答案回答了如何以有效的方式替换这样的元素。但是,如果您只想删除,为什么不使用
a=[1,2,3,4,5,6,7,8]dela[starting_element::4]dela[starting_element::3]
?显示您尝试的代码会非常有帮助。@BatuDog88,当您说替换时,您的意思是用
-
替换它们还是,还有别的吗?事实上,我假装要删除这些元素(不是替换它们),但在从列表中删除元素之前我遇到了麻烦,因为在下一次迭代中,列表大小不同,并且没有删除我想要的元素,所以我先替换这些元素,然后从列表中删除所有“-”s。也许不是很有效,但它对我来说很有效。我上面的答案回答了如何以有效的方式替换这样的元素。但是,如果您只想删除,为什么不使用
a=[1,2,3,4,5,6,7,8]dela[starting_element::4]dela[starting_element::3]
?为什么不只替换
l
中的值,这样您就不必创建新的列表
l[i]='-'
你可以删除
否则
子句我不确定他们是否想修改他们原来的列表,所以我做了一个新列表以防万一。为什么不直接替换
l
中的值,这样你就不必创建新列表了
l[i]='-'
你可以删除
否则
子句我不确定他们是否想修改他们原来的列表,所以我做了一个新列表以防万一。为什么不直接替换
l
中的值,这样你就不必创建新列表了
l[i]='-'
你可以删除
否则
子句我不确定他们是否想修改他们原来的列表,所以我做了一个新的列表以防万一。为什么不在<