Python列表切片范围
我是一个新的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%-
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
的值。