python函数中r[(s==';偶数';::2)的含义
问题是: “创建一个函数,返回列表或字符串r中的字符 在奇数或偶数位置,取决于说明符s。说明符 对于奇数位置(1、3、5,…)上的项目为“奇数”,对于奇数位置(1、3、5,…)上的项目为“偶数” 项目位于偶数位置(2、4、6等)。” 例如,字符位于位置([2,4,6,8,10],“偶数”)➞ [4,8] 已设法解决,但发现一种更快的解决方法是使用: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],在我们选择列表中的偶数索引编号之前
def char_位置(r,s):
返回r[s==“偶数”::2]
我想知道如何解释
r[s=='偶数'::2]
,在我们选择列表中的偶数索引编号之前,是否在索引括号内添加了一个条件?然后它如何选择奇数?r[s=='偶数'::2]
s==“偶数”
如果s
为“偶数”,则其计算结果为1(这是True的数字等效值),否则其计算结果为零(这是False的数字等效值)。现在让我们根据示例对其进行分解:
将所有项目从1开始,直到项目10(不包括在内)r[1:10]
r[1:][/code>获取从1开始到结尾的所有项目
从1开始到第10项每隔一秒提取一项r[1:10:2]
相应地从1开始到结束每秒钟提取一项r[1::2]
- 在@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!