Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将变量放入列表切片操作中?_Python_List_Slice - Fatal编程技术网

Python 如何将变量放入列表切片操作中?

Python 如何将变量放入列表切片操作中?,python,list,slice,Python,List,Slice,我在函数中有一个列表,有时我想使用整个函数,有时只是一个部分,取决于偏移量变量。有时我想将偏移应用于起点,有时应用于终点 我知道 my_list = my_list[:] 会给我同样的清单,而且 start= None end = None my_list[start:end] 似乎做了同样的事情 但问题是,有时我想增加参数,但我不能将1添加到无。(由于我可以将其初始化为0,因此开始似乎不是什么问题。) 我想要一些类似于: my_list[start: end + offset] s

我在函数中有一个列表,有时我想使用整个函数,有时只是一个部分,取决于偏移量变量。有时我想将偏移应用于起点,有时应用于终点

我知道

my_list = my_list[:] 
会给我同样的清单,而且

start= None
end = None
my_list[start:end] 
似乎做了同样的事情

但问题是,有时我想增加参数,但我不能将1添加到无。(由于我可以将其初始化为0,因此开始似乎不是什么问题。)

我想要一些类似于:

 my_list[start: end + offset]
s = "Hello world!"
print(s[:-6])
有时,我甚至希望在那里也有一个常数,比如

my_list[start: end -1 + offset]
我写这篇文章时很累,所以如果容易的话,我道歉

编辑-我的最终解决方案……

我遵循在end参数中使用length(如解决方案中所述)的思想,并将offset变量更改为两个变量。详情如下

整个想法是我有一个比较两个列表中元素的函数。默认情况下,偏移量为零,因此将一个元素中的第一个元素与另一个元素中的第一个元素进行比较。然后我想要一个偏移量,这样一个元素中的第一个元素与另一个元素的第二个元素(或第三个元素,等等)进行比较

因为我想在不同的地方使用不同的偏移量,我发现我必须事先将偏移量处理成两个变量

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)-1-neg_offset], my_second_list[neg_offset: len(my_second_list)-pos_offset])

当列表不均匀时,我想我本可以通过计算计算计算出差异,而不是硬编码-1(或-2等),但这对我来说已经足够好了。

Python支持负偏移量来指定距列表末尾的距离(-1是最后一个字符),因此如果您有类似于:

 my_list[start: end + offset]
s = "Hello world!"
print(s[:-6])
它将打印
Hello

您还可以执行以下操作:

s = "Hello world!"
print(s[-5:])
它将打印出
world

你不能求和。 但是,您可以求和到其他数字,如0(开始)和
len(我的列表)
(结束)

(前四个输出完全相同,以显示差异及其工作方式)

这样,您可以轻松更改参数。因为start只是“0”,与“None”相同,但由于它的数据类型,您可以增加和减少它的值。 end是
len(my_list)
,它返回一个整数,表示列表的长度,因此也是end。因为它是一个整数,所以也可以增加/减少该值

你可以做的另一件事是使用底片:

#####################################
###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]

你就不能设置
end=len(我的列表)
?谢谢。我最后在end参数中使用了len(我的_列表)。我将把我的最终代码的细节放在我的问题的编辑中,以防它对其他人有所帮助。