python中 list 的组合问题

源于最近写程序频繁用到了list中元素两两组合问题,特意总结如下:
list中相邻元素两两组合:

portList = ['a', 'b', 'c', 'd']
for i, p in enumerate(portList):
    if i == len(portList) - 1:
        break
        
    print(p, portList[i + 1])
    print("------")

在这里插入图片描述

#不使用内置工具实现有序排列
list1=['a','b','c','d']
list2 = []
for i in range(len(list1)):
    for j in range(i+1,len(list1)):
        if i != j:
            list2.append((list1[i],list1[j]))
print(list2)

使用内置函数实现有序组合

import itertools
list1=['a','b','c','d']
#2指的是几个元素组合
iter = itertools.combinations(list1,2)
print(list(iter))

在这里插入图片描述

#不使用内置工具实现无序排列
list1=['a','b','c','d']
list2 = []
for i in list1:
    for j in list1:
        if i != j:
            list2.append((i,j))
print(list2)
#无序排列
import itertools
list1=['a','b','c','d']
iter = itertools.permutations(list1,2)
print(list(iter))

在这里插入图片描述二、zip的妙用

l1 = ['a', 'b']
l2 = [1, 2]
l3 = ['A', 'B']
batch = (l1, l2, l3)
print(list(zip(*batch)))

运行的结果如下:
在这里插入图片描述
参考文献:
https://www.cnblogs.com/angdh/p/10277829.html
https://blog.csdn.net/weixin_41576383/article/details/82290185

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值