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列表任意数操作内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论