python学习-zip/unzip

本文介绍了Python的zip()函数,用于将多个可迭代对象的对应元素打包成元组,以及如何使用*操作符进行解压。此外,还详细解释了zip(*z1)的用法,即解包后再打包恢复原序列的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.zip()

zip() 是一个 Python 内置函数,用于将多个可迭代对象(如列表、元组等)中对应位置的元素打包成元组,然后返回一个迭代器,这个迭代器生成了这些元组。

zip() 函数的语法如下:

zip(iterable1, iterable2, ...)

参数说明:

  • iterable1, iterable2, ...: 要进行打包的可迭代对象,可以是多个,但长度应该相同。

zip() 函数将返回一个迭代器,这个迭代器会生成由传入的可迭代对象中对应位置的元素组成的元组。如果传入的可迭代对象长度不一致,zip() 函数会以最短的可迭代对象长度为准。

示例:

# 使用zip()函数打包两个列表
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']

zipped = zip(list1, list2)

# 输出zip对象
print(zipped)
# <zip object at 0x000001F7F0C5E3C0>

# 可以通过list()将zip对象转换为列表
print(list(zipped))
# [(1, 'a'), (2, 'b'), (3, 'c')]

# 使用zip()函数和循环同时迭代两个列表
for item1, item2 in zip(list1, list2):
    print(item1, item2)

# 输出:
# 1 a
# 2 b
# 3 c

2.unpack

使用*使打包的元组进行解压。

2.1print(*z1)

在Python中,* 操作符用于解压迭代对象。在 print(*z1) 中,z1 是一个迭代器(比如一个 zip 对象)。这个语法实际上等同于将迭代器中的元素解压出来,并作为参数传递给 print() 函数。具体地,print(*z1) 的作用是将 z1 中的元素解压出来,然后将这些元素作为单独的参数传递给 print() 函数。这样的效果相当于将 z1 中的元组解压成多个单独的参数,然后打印这些参数。这种语法通常用于将一个序列解压为一个函数的参数列表。

例如:

z1 = [(1, 'a'), (2, 'b'), (3, 'c')]
print(*z1)


#上述代码的输出结果将会是:
(1, 'a') (2, 'b') (3, 'c')


#它等价于:
print((1, 'a'), (2, 'b'), (3, 'c'))

2.2 result1, result2 = zip(*z1)

zip(*z1) 的作用是将 z1 中的元组解压成多个独立的序列,并将这些序列分别作为参数传递给 zip() 函数。然后 zip() 函数会将这些序列中对

result1, result2 = zip(*z1)

应位置的元素打包成元组。这个操作的结果是重新恢复了原始的 z1

假设 z1 是一个二维的迭代器,比如:

z1 = [(1, 'a'), (2, 'b'), (3, 'c')]

那么 zip(*z1) 就相当于将这些元组解压为两个独立的序列 (1, 2, 3)('a', 'b', 'c'),然后将它们传递给 zip() 函数。zip() 函数会将这两个序列中对应位置的元素打包成元组。

所以,result1result2 就会得到两个结果序列,分别是 (1, 2, 3)('a', 'b', 'c')

result1, result2 = zip(*z1)

这个语句将 zip(*z1) 的结果分别赋值给 result1result2。在本例中,result1 将会是 (1, 2, 3),而 result2 将会是 ('a', 'b', 'c')

<think>我们有两个任务:1.卸载已安装的OpenCV4.5;2.安装并使用OpenCV3.4.15。根据引用[1]和引用[3],卸载OpenCV的方法取决于安装方式(源码编译或包管理器安装)。由于用户提到要卸载特定版本(4.5)并安装3.4.15,我们假设用户之前是通过源码编译安装的OpenCV4.5(因为包管理器通常不会同时安装多个版本,且卸载特定版本较复杂)。步骤:一、卸载OpenCV4.51.如果之前是通过源码编译安装的,需要进入编译时的build目录执行`sudo makeuninstall`,然后手动删除残余文件。2.如果通过包管理器安装,则使用`aptpurge`卸载相关包。二、安装OpenCV3.4.151.从源码编译安装OpenCV3.4.15,并指定安装路径(避免污染系统目录,可选)。2.或者使用pip在虚拟环境中安装(仅限于Python使用)。考虑到用户可能需要系统级安装(不仅仅是Python),这里给出源码编译安装OpenCV3.4.15的方法。详细步骤: ###一、卸载OpenCV4.5####情况1:通过源码编译安装```bash#1.进入之前编译OpenCV4.5的build目录(如果还存在) cd/path/to/opencv-4.5/build#2.执行卸载sudomake uninstall#3.手动删除残余文件(根据引用[3]的提示) sudorm -rf \/usr/local/include/opencv*\/usr/local/include/opencv2\/usr/local/lib/libopencv* \/usr/local/share/opencv*\/usr/local/bin/opencv* \/usr/local/lib/cmake/opencv*#注意:如果安装时指定了其他路径(如`-DCMAKE_INSTALL_PREFIX=/opt/opencv4.5`),则删除该路径下的文件``` ####情况2:通过APT安装```bash#1.查找已安装的opencv包dpkg --get-selections |grep opencv#2.卸载所有与opencv4.5相关的包(根据上一步列出的包名) sudoapt purgelibopencv-devopencv-datapython3-opencv...#替换为实际的包名sudo aptautoremove```####清理残留(通用) ```bash#清理可能残留的配置文件sudo updatedb#更新locate数据库(如果未安装locate,先安装)locateopencv| grep'/usr/local'#查看/usr/local下的残留(如果之前是源码安装) #对于查找到的残留文件,手动删除(谨慎操作)#或者使用find命令(根据引用[3]) sudofind /usr -name "*opencv*" -exec rm-rf{} \;2>/dev/null#注意:此命令会删除/usr下所有包含opencv的文件,请确保只删除了4.5版本相关的文件``` ###二、安装OpenCV3.4.15####方法1:源码编译安装(系统级或自定义路径)1.下载源码```bashwget-Oopencv-3.4.15.ziphttps://github.com/opencv/opencv/archive/3.4.15.zipunzipopencv-3.4.15.zipcd opencv-3.4.15``` 2.创建build目录并配置```bashmkdir build&& cdbuild#配置安装到/usr/local(默认)或自定义路径(例如/opt/opencv-3.4.15) cmake -D CMAKE_BUILD_TYPE=RELEASE \-D CMAKE_INSTALL_PREFIX=/usr/local \-D INSTALL_C_EXAMPLES=OFF \-D INSTALL_PYTHON_EXAMPLES=OFF\-DBUILD_EXAMPLES=OFF\-D OPENCV_GENERATE_PKGCONFIG=ON ..#开启pkg-config支持``` 3.编译并安装```bashmake-j$(nproc)sudo makeinstall``` 4.更新动态链接库缓存```bashsudo ldconfig``` ####方法2:使用pip在Python虚拟环境中安装(仅Python) 根据引用[2],我们可以为Python创建虚拟环境并安装指定版本的opencv-python包(适用于仅需Python接口的情况)。```bashconda create--name py3.6 python=3.6#创建Python3.6环境condaactivate py3.6pip installopencv-python==3.4.1.15pipinstall opencv-contrib-python==3.4.1.15``` ###三、验证安装```bash#检查系统级安装pkg-config --modversionopencv#应返回3.4.15#检查Python环境python-c "import cv2;print(cv2.__version__)"#应返回3.4.15```###注意事项1.如果同时存在多个版本的OpenCV,可以通过设置`PKG_CONFIG_PATH`环境变量指定版本,或者使用绝对路径引用。2.在编译其他依赖OpenCV的库时,可以通过`-DOpenCV_DIR`指定OpenCV的cmake路径(例如`-DOpenCV_DIR=/opt/opencv-3.4.15/lib/cmake/opencv`)。3.卸载时务必小心,避免删除其他版本的OpenCV文件。###相关问题1.如何在同一系统中安装多个版本的OpenCV并切换使用?2.使用源码编译安装OpenCV时,如何优化编译参数以提高性能?3.在Ubuntu系统中,如何彻底清理残留的OpenCV文件?</think>### 如何卸载 OpenCV 4.5 并安装 OpenCV 3.4.15 #### 一、卸载 OpenCV 4.5 ```bash # 1. 查找 OpenCV 4.5 的安装路径 pkg-config --modversion opencv4 # 确认版本 [^1] locate opencv | grep '/usr/local' # 定位安装文件 # 2. 源码编译安装的卸载(推荐方式) cd /path/to/opencv-4.5/build # 进入原始编译目录 sudo make uninstall # 3. 手动删除残留文件(关键步骤) sudo rm -rf \ /usr/local/include/opencv4 \ /usr/local/lib/libopencv_* \ /usr/local/lib/cmake/opencv4 \ /usr/local/share/opencv4 \ /usr/local/bin/opencv_* # [^3] # 4. 清理 Python 绑定 pip uninstall opencv-python opencv-contrib-python -y sudo apt purge python3-opencv -y # 系统级Python包 ``` #### 二、安装 OpenCV 3.4.15 ```bash # 1. 安装依赖 sudo apt update sudo apt install build-essential cmake git libgtk2.0-dev pkg-config \ libavcodec-dev libavformat-dev libswscale-dev libtbb2 libtbb-dev \ libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev -y # 2. 下载源码 wget -O opencv-3.4.15.zip https://github.com/opencv/opencv/archive/3.4.15.zip unzip opencv-3.4.15.zip && cd opencv-3.4.15 # 3. 配置编译选项 mkdir build && cd build cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_C_EXAMPLES=OFF \ -D OPENCV_GENERATE_PKGCONFIG=ON .. # 启用pkg-config支持 [^5] # 4. 编译安装 make -j$(nproc) sudo make install # 5. 更新链接库 sudo ldconfig ``` #### 三、验证安装 ```bash # 检查系统级安装 pkg-config --modversion opencv # 应显示 3.4.15 [^1] # 检查Python绑定 python3 -c "import cv2; print(cv2.__version__)" # 应显示 3.4.15 ``` #### 四、多版本共存方案(可选) ```bash # 1. 安装时指定自定义路径 cmake -D CMAKE_INSTALL_PREFIX=/opt/opencv-3.4.15 .. # 2. 使用时配置环境变量 export LD_LIBRARY_PATH=/opt/opencv-3.4.15/lib:$LD_LIBRARY_PATH export PKG_CONFIG_PATH=/opt/opencv-3.4.15/lib/pkgconfig:$PKG_CONFIG_PATH # 3. Python 虚拟环境安装 conda create -n py36 python=3.6 conda activate py36 pip install opencv-python==3.4.1.15 opencv-contrib-python==3.4.1.15 # [^2] ``` > **注意事项**: > 1. 卸载前备份:`sudo cp -r /usr/local /usr/local.bak` > 2. 若找不到原始 build 目录,需[重新编译同版本 OpenCV 4.5 再卸载](^4) > 3. 安装后运行 `sudo updatedb` 更新文件索引 > 4. 使用自定义路径安装可避免系统路径污染
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值