我在函数中有一个列表,我想有时使用整个事物,有时只是一个取决于偏移量变量的部分。有时候我想把偏移应用到开头,有时候结束。
我知道
my_list = my_list[:]
会给我一个相同的列表,
start= None
end = None
my_list[start:end]
似乎做同样的事情。
但问题是,有时我想增加参数,但我不能将1添加到无。 (开始看起来不是问题,因为我可以将它初始化为0。)
我希望有类似的东西:
my_list[start: end + offset]
有时候我甚至想要一直坚持在那里,比如
my_list[start: end -1 + offset]
我写这篇文章时很累,如果这很容易就道歉。
编辑 - 我的最终解决方案....
我遵循了使用end参数中的长度(如解决方案中所述)以及将偏移变量更改为两个变量的想法。详情如下......
整个想法是我有一个比较两个列表中元素的函数。默认情况下,偏移量为零,因此将一个中的第一个元素与另一个元素中的第一个元素进行比较。然后我想要一个偏移量,所以将一个中的第一个元素与另一个元素(或第三个元素等)进行比较
因为我希望在不同的地方使用不同的偏移,我发现我必须事先将偏移处理成两个变量......
if offset < 0:
neg_offset = abs(offset)
if offset > 0:
pos_offset = offset
然后我把这两个列表放在我的函数中:当列表长度相同时......
get_list_comparison(my_first_list[pos_offset: len(my_first_list)-neg_offset], my_second_list[neg_offset: len(my_second_list)-pos_offset])
当第二个列表比第一个列表短时:
get_list_comparison(my_first_list[pos_offset:len(my_first_list)-1-neg_offset], my_second_list[neg_offset: len(my_second_list)-pos_offset])
当列表不均匀时,我想我可以计算出差异,而不是硬编码-1(或-2等),但这对我来说已经足够好了。
答案 0 :(得分:2)
你不能和无。
但是,您可以将其他数字相加,例如0(开始)和len(my_list)
(结束)
my_list = [1,2,3,4,5,7,8,9,10]
print(my_list)
my_list = my_list[:]
print(my_list)
start1 = None
end1 = None
my_list = my_list[start1:end1]
print(my_list)
######################################
start2 = 0
end2 = len(my_list)
my_list = my_list[start2:end2]
print(my_list)
my_list = my_list[start2 + 3:end2 - 3]
print(my_list)
(前四个输出是相同的,以显示差异及其工作原理)。
这样您就可以轻松更改参数。因为 start 只是'0',和'None'相同,但由于它的数据类型,你可以增加和减少它的值。
end 是len(my_list)
,它返回一个表示列表长度的整数,因此也是结尾。因为它是一个整数,所以你也可以增加/减少该值。
你可以做的另一件事是使用底片:
#####################################
###Using negatives
start3 = -3
end3 = +3
my_list = my_list[start3:end3]
print(my_list)
请参阅?我有点'逆转'开始结束,通过使结束为正,并开始消极。
输出所有代码:
[1, 2, 3, 4, 5, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 7, 8, 9, 10]
[4, 5, 7]
[4, 5, 7]
答案 1 :(得分:0)
Python支持负偏移来指定距离列表末尾的距离(-1是最后一个字符),所以如果你有类似的东西:
s = "Hello world!"
print(s[:-6])
它会打印Hello
。
你也可以这样做:
s = "Hello world!"
print(s[-5:])
它会打印world
。