Chainguys 2021-07-17 18:40 采纳率: 93.6%
浏览 16
已采纳

求一个列表的子列表,两个for和range的搭配我看着有点晕

def allSublists(data):
# Start out with the empty list as the only sublist of data
  sublists = [[]]
# Generate all of the sublists of data from length 1 to len(data)
  for length in range(1, len(data) + 1):
# Generate the sublists starting at each index
    for i in range(0, len(data) - length + 1):
# Add the current sublist to the list of sublists
    sublists.append(data[i : i + length])
# Return the result
  return sublists

RT,两个for和range的搭配看得有点晕,能否详细讲解。
当然我知道这是在动态地写子列表的边界或者范围,但是为啥这么搭配我确实没懂。

  • 写回答

1条回答 默认 最新

  • Hann Yang 全栈领域优质创作者 2021-07-17 19:17
    关注

    用列表推导式一行代码就行:

    
    >>> subLists = lambda L:[L[i:j] for i in range(len(L)) for j in range(i+1,len(L)+1)]
    >>> subLists([1,2,3,4])
    [[1], [1, 2], [1, 2, 3], [1, 2, 3, 4], [2], [2, 3], [2, 3, 4], [3], [3, 4], [4]]
    >>> 
    
    双重循环,遍历出原列表的所有切片, 
    L[i:j] 两个循环变量
     i -> 0 ~ len()
     j -> j+1 ~ len()+1
    不含右边界
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 7月17日
  • 创建了问题 7月17日

悬赏问题

  • ¥15 根据会员信息表绘制堆积柱状图
  • ¥100 华为手机私有App后台保活
  • ¥20 有谁能看看我coe文件到底哪儿有问题吗?
  • ¥20 我的这个coe文件到底哪儿出问题了
  • ¥15 matlab使用自定义函数时一直报错输入参数过多
  • ¥15 设计一个温度闭环控制系统
  • ¥100 rtmpose姿态评估
  • ¥15 java 通过反射找路径下的类,打包后就找不到
  • ¥15 通联支付网上收银统一下单接口
  • ¥15 angular有偿编写,