Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.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函数中r[(s==';偶数';::2)的含义_Python_Indexing - Fatal编程技术网

python函数中r[(s==';偶数';::2)的含义

python函数中r[(s==';偶数';::2)的含义,python,indexing,Python,Indexing,问题是: “创建一个函数,返回列表或字符串r中的字符 在奇数或偶数位置,取决于说明符s。说明符 对于奇数位置(1、3、5,…)上的项目为“奇数”,对于奇数位置(1、3、5,…)上的项目为“偶数” 项目位于偶数位置(2、4、6等)。” 例如,字符位于位置([2,4,6,8,10],“偶数”)➞ [4,8] 已设法解决,但发现一种更快的解决方法是使用: def char_位置(r,s): 返回r[s==“偶数”::2] 我想知道如何解释r[s=='偶数'::2],在我们选择列表中的偶数索引编号之前

问题是:

“创建一个函数,返回列表或字符串r中的字符 在奇数或偶数位置,取决于说明符s。说明符 对于奇数位置(1、3、5,…)上的项目为“奇数”,对于奇数位置(1、3、5,…)上的项目为“偶数” 项目位于偶数位置(2、4、6等)。”

例如,字符位于位置([2,4,6,8,10],“偶数”)➞ [4,8]

已设法解决,但发现一种更快的解决方法是使用:

def char_位置(r,s):
返回r[s==“偶数”::2]

我想知道如何解释
r[s=='偶数'::2]
,在我们选择列表中的偶数索引编号之前,是否在索引括号内添加了一个条件?然后它如何选择奇数?

r[s=='偶数'::2]

s==“偶数”
如果
s
为“偶数”,则其计算结果为1(这是True的数字等效值),否则其计算结果为零(这是False的数字等效值)。现在让我们根据示例对其进行分解:

  • r[1:10]
    将所有项目从1开始,直到项目10(不包括在内)

  • r[1:][/code>获取从1开始到结尾的所有项目

  • r[1:10:2]
    从1开始到第10项每隔一秒提取一项

  • r[1::2]
    相应地从1开始到结束每秒钟提取一项


    • 在@jim答案中添加

      Python中的布尔函数是作为整数的子类实现的

      >>> int(True)
      1
      >>> int(False)
      0
      >>> issubclass(type(True), int)
      True
      >>> issubclass(type(False), int)
      True
      

      调用
      r[s=='even':2]
      python使用slice对象
      slice(True,None,None)
      slice(False,None,None)
      [取决于
      s=='even'的结果]。C API调用将从切片对象中提取start、stop和step数据成员作为C整数。因此,这就是
      start
      boolean
      object)参数实际转换为
      int
      对象的地方,使得要计算的表达式与
      r[1::2]
      r[0::2]相同

      我今天早些时候回答了一个类似的问题…这是一个重复吗?有趣的是,这在其他语言中是一样的吗?我有一个想法,VisualBasic中的布尔值只是内存的一位1/0…知道为什么在Python中不这样做以节省内存吗?没关系,这里有另一个有趣的选择。看起来你确实可以在Python中添加True和Falsen、 真+真等于2!