python - 创建一个删除列表中奇数倍数的函数
问题描述
其中一个修订问题涉及通过删除列表中的所有奇数和 x 倍数的整数来修改原始列表。
def remove_odd_multiples(numbers_list, multiple_of):
for ele in numbers_list:
if (ele%2) != 0 and (ele % multiple_of) == 0:
numbers_list.remove(ele)
return numbers_list
输出:
numbers_list = [1, 5, 23, 3, 6, 17, 9, 18]
print("Before:", numbers_list)
remove_odd_multiples(numbers_list, 3)
print("After:", numbers_list)
Before: [1, 5, 23, 3, 6, 17, 9, 18]
After: [1, 5, 23, 6, 17, 18]
它确实有效,但是将代码输入到 coderunner 中,我的代码未能通过一些未显示的隐藏检查。我打算错误地解决这个问题吗?我应该使用 pop 而不是 .remove 吗?
解决方案
您可以使用列表推导返回一个带有结果的新列表,而不是在迭代时删除。
def remove_odd_multiples(numbers_list, multiple_of):
return [x for x in numbers_list if x % 2 == 0 or x % multiple_of != 0]
要就地修改列表:
def remove_odd_multiples(numbers_list, multiple_of):
numbers_list[:] = [x for x in numbers_list if x % 2 == 0 or x % multiple_of != 0]
在删除元素的同时向后循环还可以确保未处理的元素不会移动。
def remove_odd_multiples(numbers_list, multiple_of):
for i in range(len(numbers_list) - 1, -1, -1):
if (numbers_list[i]%2) != 0 and (numbers_list[i] % multiple_of) == 0:
del numbers_list[i]
推荐阅读
- python - Python 无法在 Raspberry Pi 上编译
- python - 从用户获取输入并将其粘贴到命令提示符 | Python
- git - Linux 上的多个 github 帐户 - 无法推送到远程,但可以拉取
- javascript - 每当我加载我的项目时,它都会显示未定义的索引错误?
- python - Flask 应用程序 Heroku 错误应用程序崩溃 Windows
- android - React-native android:可以通过命令运行应用程序,但不能通过 android studio 运行
- react-native - 应用程序崩溃并出现错误:在广告上的触摸事件之后,无法找到类 UIManager 的 JSIModule
- ios - 放大视频 - 如何使用 swift 将视频上传到“输入”存储桶?
- c++ - 有没有办法识别持久性
独特性? - python - 将负行值与前一行 pandas 相加