Python列表切片范围

Python列表切片范围,python,Python,我是一个新的Python学习者。我被以下代码阻止: return ['FizzBuzz'[i%-3&-4:i%-5&8^12]or`i`for i in range(1,n+1)] 特别是它是什么意思:[i%-3和-4:i%-5和8^12] 非常感谢你 :是范围符号,意思是在列表[start:end]中给我开始和结束之间的列表元素 %是模运算符, &是二进制(按位)and运算符,因此第一部分: i%-3和-4 等于mod(i,-3)和-4 ^是异或运算符,因此第二部分: i%-

我是一个新的Python学习者。我被以下代码阻止:

return ['FizzBuzz'[i%-3&-4:i%-5&8^12]or`i`for i in range(1,n+1)]
特别是它是什么意思:
[i%-3和-4:i%-5和8^12]


非常感谢你

是范围符号,意思是在
列表[start:end]
中给我开始和结束之间的列表元素

%
是模运算符,
&
是二进制(按位)and运算符,因此第一部分:

i%-3和-4

等于
mod(i,-3)和-4

^
是异或运算符,因此第二部分:

i%-5&8^12

等于
mod(i,-5)和8^12

模运算符从第一个参数除以第二个参数得到余数

如果您需要更多地了解python二进制(按位)运算符

如注释中所述,如果生成的第一个列表为空,则在没有back tics``的情况下,or语句后面的最后一部分将返回从
1到n+1的范围

在该语句中,后面的记号是repr()函数的Python2语法。
有关更多信息,请参见:

是范围符号,意思是在
列表[start:end]
中为我提供开始和结束之间的列表元素

%
是模运算符,
&
是二进制(按位)and运算符,因此第一部分:

i%-3和-4

等于
mod(i,-3)和-4

^
是异或运算符,因此第二部分:

i%-5&8^12

等于
mod(i,-5)和8^12

模运算符从第一个参数除以第二个参数得到余数

如果您需要更多地了解python二进制(按位)运算符

如注释中所述,如果生成的第一个列表为空,则在没有back tics``的情况下,or语句后面的最后一部分将返回从
1到n+1的范围

在该语句中,后面的记号是repr()函数的Python2语法。
有关更多信息,请参见

如果您是python新手,在哪里会遇到这样的代码?此类代码不应在实际程序中使用。它不会帮助您更好地理解Python(其目的是简单明了),但只会帮助您理解一些程序员对“乐趣”的奇怪定义;)另请参见@0TT0
&
^
是位运算符<代码>i%-3和-4
进行
0、-4、-4
重复,而
i%-5和8^12
进行
12、4、4、4
重复。请注意,起始切片索引是如何每三次重复其模式的,而结束索引是每五次重复一次的。如果您是python新手,您在哪里会遇到这样的代码?此类代码不应在实际程序中使用。它不会帮助您更好地理解Python(其目的是简单明了),但只会帮助您理解一些程序员对“乐趣”的奇怪定义;)另请参见@0TT0
&
^
是位运算符<代码>i%-3和-4
进行
0、-4、-4
重复,而
i%-5和8^12
进行
12、4、4、4
重复。注意开始的片段索引是如何每三次重复其模式的,而结束的索引是每五次重复一次的。并且
部分带有反勾号?@PeterWood我不理解反勾号,但是如果没有它们,如果字符串片段为空,则
I
的值为空used@PatrickHaugh. Backticks是一种不推荐使用的拼写
repr(i)
——因此问题中的代码是python2。上面的运算符优先级都是错误的
i%-3&-4
只是有时等于
i%(-3&-4)
我想你误解了Patrick Haugh的评论。他并不是说如果
`i`
不在那里,就会返回一个范围(这将是一个语法错误)。他的意思是,如果字符串片是空的,
i
的值将被使用。
部分带有反勾号?@PeterWood我不理解反勾号,但是如果没有它们,如果字符串片是空的,则
i
的值是空的used@PatrickHaugh. Backticks是一种不推荐使用的拼写
repr(i)
——因此问题中的代码是python2。上面的运算符优先级都是错误的
i%-3&-4
只是有时等于
i%(-3&-4)
我想你误解了Patrick Haugh的评论。他并不是说如果
`i`
不在那里,就会返回一个范围(这将是一个语法错误)。他的意思是,如果字符串片段为空,则将使用
i
的值。