python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > python列表任意数操作

python对列表中任意两个数进行操作的实现

作者:Python热爱者

本文主要介绍了在Python中实现列表中整型元素和数组元素两两相乘或两两相与的操作,具有一定的参考价值,感兴趣的可以了解一下

python中, 实现列表中的整型元素两两相乘或列表中的数组元素两两相与

1. 假设列表中的元素是整型, 可调用以下函数:

def list_any_two_mul(mylist):
     num = 1
     temp = []
     for i in mylist[:-1]:
         temp.append([i * j for j in mylist[num:]])
         num = num + 1
     # 把多个列表变成只有一个列表
     results = [y for x in temp for y in x]
     return results

假设有列表 mylist = [3, 5, 6, 8], 调用了以上的函数 list_any_two_mul(mylist) 则返回 [15, 18, 24, 30, 40, 48]

2. 假设列表中的元素是数组形式, 可以调用以下函数:

def list_any_two_and(mylist2):
     temp2 = []
     num2 = 1
     # 先对列表中的元素两两相与
     for i in mylist2[:-1]:
         temp2.append([cv2.bitwise_and(i, j) for j in mylist2[num2:]])
         num2 = num2 + 1

     # 再把相与后的结果放在一个列表中
     results2 = []
     for i in range(len(temp2)):
         for j in range(len(temp2[i])):
             results2.append(temp2[i][j])
     return results2

验证以上函数, 先生成元素是数组的列表,再调用函数, 具体实现可参照如下代码:

>>> import numpy as np
>>> a=np.arange(1,13).reshape(3,4)
>>> a
>>> array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])
>>> b=np.arange(13,25).reshape(3,4)
>>> b
>>> array([[13, 14, 15, 16],
       [17, 18, 19, 20],
       [21, 22, 23, 24]])
>>> c=np.random.randint(0,2,(3,4))
>>> c
>>> array([[0, 1, 1, 1],
       [0, 0, 1, 1],
       [0, 0, 1, 1]])
>>> d=[a,b,c]
>>> g=list_any_two_and(g)
>>> g
>>> [array([[1, 2, 3, 0],
        [1, 2, 3, 0],
        [1, 2, 3, 8]], dtype=int32), array([[0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0]], dtype=int32), array([[0, 0, 1, 0],
        [0, 0, 1, 0],
        [0, 0, 1, 0]], dtype=int32)]

到此这篇关于python对列表中任意两个数进行操作的实现的文章就介绍到这了,更多相关python列表任意数操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

您可能感兴趣的文章:
阅读全文