Python 3.6.5-如何在列表,字典,集合中根据条件筛选数据

本文介绍Python中使用filter()函数对列表、字典和集合进行高效数据筛选的方法,包括如何通过lambda表达式筛选非负数、大于90的字典值以及能被3整除的集合元素。

列表

filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

from random import randint
data = [randint(-10, 10) for _ in range(10)]
data
[-2, 1, 10, -6, -3, 9, -1, 8, 0, -1]

print(filter(lambda x: x>= 0 , data))
<filter object at 0x00000152FBB4D208>

[x for x in data if x>= 0] # 更高效。在列表中筛选出非负数
[1, 10, 9, 8, 0]

字典

d ={x: randint(60,100) for x in range(1, 21)}
d
{1: 92, 2: 61, 3: 95, 4: 90, 5: 76, 6: 79, 7: 73, 8: 93, 9: 94, 10: 70, 11: 74, 12: 83, 13: 87, 14: 80, 15: 99, 16: 62, 17: 100, 18: 84, 19: 61, 20: 70}

{k: v for k, v in d.items() if v > 90} # 在字典中筛选出大于90的值。items():将字典中的所有项,以列表方式返回
{1: 92, 3: 95, 8: 93, 9: 94, 15: 99, 17: 100}

集合

data
[-2, 1, 10, -6, -3, 9, -1, 8, 0, -1]

s = set(data) # 将data转变为集合
s
{0, 1, 8, 9, 10, -1, -6, -3, -2}

{ x for x in s if x % 3 == 0} # 在集合中筛选出能被3整除的数
{0, 9, -6, -3}

<think>我们面对的问题是:在安装`python3-venv`时出现依赖错误,提示需要`python3 (= 3.6.5-3)`,但系统正要安装的是`3.6.7-1~18.04`,导致依赖不满足。同时,我们注意到引用中提到了几种可能的解决方法。 根据引用内容,我们可以总结出以下信息: 1. 引用[1]和[2]都提到了相同的错误信息,即依赖关系问题。 2. 引用[2]建议在安装时指定正确的版本号,例如安装`python3.6-venv`而不是`python3-venv`。 3. 引用[3]说明了使用`python3.6 -m venv`来创建虚拟环境,这提示我们可能不需要安装`python3-venv`包,而是直接使用Python自带的venv模块。 4. 引用[4]提到可以通过添加第三方仓库来安装Python 3.6。 因此,解决这个问题的思路可能有: 1. 尝试安装指定版本的`python3.6-venv`(如果可用)。 2. 使用Python自带的venv模块创建虚拟环境,而不通过系统包管理器安装`python3-venv`。 3. 添加包含正确依赖的第三方仓库。 具体步骤: ### 方法1:安装指定版本的`python3.6-venv` 根据引用[2],我们可以尝试安装`python3.6-venv`: ```bash sudo apt install python3.6-venv ``` ### 方法2:使用Python自带的venv模块(推荐) 引用[3]指出,我们可以直接使用Python 3.6的venv模块来创建虚拟环境,而不需要安装`python3-venv`包。命令如下: ```bash python3.6 -m venv myenv ``` 这里`myenv`是虚拟环境的目录名。这种方法绕过了系统包管理器,直接使用Python自带的模块。 ### 方法3:添加第三方仓库更新 如果方法1失败,可能是因为官方仓库中没有我们需要的版本。引用[4]提到可以添加一个包含Python 3.6的第三方仓库: ```bash sudo add-apt-repository ppa:jonathonf/python-3.6 sudo apt update ``` 然后再次尝试安装`python3.6-venv`: ```bash sudo apt install python3.6-venv ``` ### 方法4:修复依赖关系 如果上述方法都不行,可以尝试修复依赖关系: ```bash sudo apt install -f ``` ### 步骤总结 1. 首先尝试方法1:安装`python3.6-venv`。 2. 如果方法1失败,尝试方法3:添加PPA仓库安装。 3. 如果安装成功,就可以使用`python3.6 -m venv`来创建虚拟环境。 4. 如果不想安装,直接使用方法2(使用Python自带的模块)创建虚拟环境。 注意:使用PPA仓库可能会更新系统中的Python版本,请谨慎操作。 §§相关问题§§ 1. 如何检查当前系统中已安装的Python版本? 2. 如何在不影响系统Python环境的情况下使用不同版本的Python3. 使用虚拟环境有哪些好处? 4. 如何删除已添加的PPA仓库?</think>### 解决 Python3-venv 依赖问题 您遇到的依赖冲突是由于系统要求安装的 Python 3.6.7-1~18.04python3-venv 需要的 python3 (=3.6.5-3) 版本不匹配导致的。以下是分步解决方案: #### 1. **安装特定版本的 python3.6-venv**(推荐方法) 根据引用[2]的提示,直接安装与当前 Python 版本匹配的 venv 包: ```bash sudo apt install python3.6-venv ``` 这会安装与 Python 3.6.7 兼容的 venv 模块,绕过版本冲突问题[^2]。 #### 2. **使用 Python 内置模块创建虚拟环境** 如果上述方法失败,可跳过 apt 直接使用 Python 内置功能(引用[3]方法): ```bash python3.6 -m venv myenv # 创建名为 myenv 的虚拟环境 source myenv/bin/activate # 激活环境 ``` 此方法不依赖系统包管理器,直接调用 Python 的 venv 模块[^3]。 #### 3. **添加第三方仓库更新依赖**(最后手段) 若仍需要修复系统级依赖,按引用[4]添加 PPA 仓库: ```bash sudo add-apt-repository ppa:jonathonf/python-3.6 sudo apt update sudo apt install python3.6-venv ``` ⚠️ 注意:这会引入第三方软件源,可能影响系统稳定性[^4]。 #### 4. **检查版本兼容性** ```bash python3.6 --version # 查看实际安装版本 apt-cache policy python3.6-venv # 检查可用版本 ``` ### 根本原因分析 1. **版本锁定冲突**:系统已安装 Python 3.6.7,但 python3-venv 要求严格匹配 3.6.5-3[^1] 2. **包命名差异**:Ubuntu 中 venv 包名包含子版本号(如 python3.6-venv)[^2] 3. **仓库滞后**:官方仓库可能未及时更新依赖关系[^4] > 建议优先使用方案1或2,避免修改系统仓库。虚拟环境创建成功后,可通过 `python -m pip install --upgrade pip` 更新环境内 pip。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值