如何将Python for循环作为三元运算符编写
我有以下代码:如何将Python for循环作为三元运算符编写,python,python-3.x,Python,Python 3.x,我有以下代码: stuart = 0 kevin = 0 for itr, char in enumerate(word_list): if char in "aeiou": kevin += len(word_list) - itr else: stuart += len(word_list) - itr 我可以把if/else语句写成三元运算符吗 我尝试了以下方法,但无效: (kevin if (char in "aeiou") el
stuart = 0
kevin = 0
for itr, char in enumerate(word_list):
if char in "aeiou":
kevin += len(word_list) - itr
else:
stuart += len(word_list) - itr
我可以把if/else语句写成三元运算符吗
我尝试了以下方法,但无效:
(kevin if (char in "aeiou") else stuart) += len(word_list) - itr
及
有没有一种方法可以将其作为三元运算符写入更紧凑的代码?将变量放在字典中,然后可以更改分配给的键:
names = {'stuart': 0, 'kevin': 0}
for itr, char in enumerate(word_list):
names['kevin' if char in "aeiou" else 'stuart'] += len(word_list) - itr
否则,不能使用条件表达式切换变量。将变量放入字典,然后可以更改分配给的键:
names = {'stuart': 0, 'kevin': 0}
for itr, char in enumerate(word_list):
names['kevin' if char in "aeiou" else 'stuart'] += len(word_list) - itr
否则不能使用条件表达式切换变量。无法更改赋值左侧的变量。但是,您可以使用全局技巧指定全局变量,尽管这是不受欢迎的,因此永远不要这样做: 对于大多数性能代码,可以将计数收集到一个包含2个项的列表中,并在aeiou中通过char对其进行索引,aeiou将选择索引1,因为True==1!对于元音,索引0为False==0表示辅音;然后将这些数据解包为所需的变量。此外,单词列表的长度将保持不变,但由于Python无法知道这一点,因此如果将lenword\u列表置于循环之外,代码的性能会更好:
counts = [0, 0]
length = len(word_list)
for itr, char in enumerate(word_list):
counts[char in "aeiou"] += length - itr
stuart, kevin = counts
无法更改赋值左侧的变量。但是,您可以使用全局技巧指定全局变量,尽管这是不受欢迎的,因此永远不要这样做: 对于大多数性能代码,可以将计数收集到一个包含2个项的列表中,并在aeiou中通过char对其进行索引,aeiou将选择索引1,因为True==1!对于元音,索引0为False==0表示辅音;然后将这些数据解包为所需的变量。此外,单词列表的长度将保持不变,但由于Python无法知道这一点,因此如果将lenword\u列表置于循环之外,代码的性能会更好:
counts = [0, 0]
length = len(word_list)
for itr, char in enumerate(word_list):
counts[char in "aeiou"] += length - itr
stuart, kevin = counts
不,这是不可能的。赋值的左侧不能是表达式。可能与否重复,这是不可能的。作业的左边不能是表达式。我想这可能是重复的,回答了OP的问题,但它不太优雅哎呀,千万别那样做。我想这回答了OP的问题,但并不十分优雅哎哟,千万别那么做。
kevin, stuart = ( kevin + len(word_list) - itr, stuart ) if char in "aeiou" else ( kevin, stuart + len(word_list) - itr )