python - 如何在Python列表中替换列表中的项目
问题描述
现在我只想用表中的 x 替换最小值、最大值....而且我不知道如何...
for i in table[1:]:
mn = min(i) if min(i) < mn else mn
mx = max(i) if max(i) > mx else mx
x = (mn+mx)/2
解决方案
以下应该有效:
def remove_outliers(table):
mx = max(map(max, table))
mn = min(map(min, table))
avg = (mx + mn) / 2
for row in table:
row[:] = [avg if x in (mx, mn) else x for x in row]
# OR
for row in table:
for i, x in enumerate(row):
if x in (mx, mn):
row[i] = avg
max(map(max, table))
:将max
函数应用于 中的每一行table
,并取max
所有这些“最大值”中的 。
row[:] = ...
:切片分配。这是row
对象的突变。只需row = ...
重新绑定循环变量而不影响仍由table
.
[avg if x in (mx, mn) else x for x in row]
:一般条件列表理解。相当不言自明。
推荐阅读
- python - 填充数组的有效方法
- javascript - 如何使用条件道具接口定义 React 组件?
- go - 在终端中工作的命令不适用于 go exec.Command
- javascript - 打字稿数字或数字枚举类型?
- c++ - 寻找数字的下一个回文,得到 SIGABRT 错误
- laravel - laarvel 项目部署到 cpanel 的问题
- python - 如何创建没有用户名但使用电子邮件和 @classethod 的 AbstractUser?
- shell - 跳过输入参数的第一行
- tags - 如何在文档模块的 Odoo 13 中隐藏“标签”?并且仍在使用它
- php - PhpStorm:有没有办法使用内联 PHPDoc 注释在 return 语句上强制类型?