首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >创建一个可能抽出的数字列表,使用列表中的数字‘访问’最多一个总和

创建一个可能抽出的数字列表,使用列表中的数字‘访问’最多一个总和
EN

Stack Overflow用户
提问于 2016-01-04 20:07:29
回答 3查看 56关注 0票数 1

我有一个数字列表,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
lst = [2,7]

我想要所有可能的组合,可以访问到一个特定的数字n,例如

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
n=10

因此,此列表将是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[2,4,6,7,8,9,10]

(2 if 2 is drawn, 4 if 2 is drawn twice, 6 if 2 is drawn 3 times,
7 if 7 is drawn, 9 if 7 and 2 are drawn and 10 if 5 times 2 is drawn)

我尝试了几种方法,但我一直发现这是一个非常困难的问题。有没有人知道是否有一种简单的方法可以做到这一点?

EN

回答 3

Stack Overflow用户

发布于 2016-01-04 20:47:33

解决这个问题最简单的方法是使用递归。

下面是一些粗略的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def find_possible_sums(numbers, possible, max, current):
    for(number in numbers)
        sum = current + number
        if(sum <= max)
            if(sum not in possible)
                possible.append(sum)
            find_possible_sums(numbers, possible, max, sum)

其中numbers = lst,possible是所有可能的数字(开始为空),max是n,sum是一个连续的总数(首先是0)。

如果您关心运行时,您可以对上面的解决方案进行许多进一步的优化。

票数 2
EN

Stack Overflow用户

发布于 2016-01-04 20:38:21

您正在寻找的是来自itertools:https://docs.python.org/2/library/itertools.html#itertools.combinations_with_replacement的combinations_with_replacement生成器

它将生成具有重复的k个元素的所有组合。你必须为k的每个可能的值调用它-在你的例子中是从1到n(包括1到n)。在此之后,您必须对每个组合中的值求和。

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from itertools import combinations_with_replacement, imap, islice
lst = [2,7]
n = 10
combinations = (combinations_with_replacement(lst, k) for k in xrange(1, n + 1))
all_combinations = chain(combinations) 
first_5 = islice(imap(sum, all_combinations), 0, 5)  # Grap the first five.

我使用生成器,因为可能的组合列表增长得相当快。

票数 0
EN

Stack Overflow用户

发布于 2016-01-04 21:40:09

Python 3的非递归解决方案:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from itertools import chain, takewhile, combinations_with_replacement, count

lst = [2, 7]
l = sorted(lst)
n = 10

set(
    chain.from_iterable(
        takewhile(
            lambda x: x != (),
            map(tuple,
                (takewhile(
                    lambda x: x <= n,
                    map(
                        lambda x: sum(x),
                        combinations_with_replacement(l, p))
                ) for p in count(1)
                )
            )
        )
    )
)

{2,4,6,7,8,9,10}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34598973

复制
相关文章
Python创建数字列表
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 10 1 sum is : 55
py3study
2020/01/03
1.3K0
Excel技巧:创建数字列表的2种基本方法
本文讲解在Excel中创建数字列表的2种不同技巧。这些列表有静态列表,也有动态列表,动态列表会随着添加或删除项目而发生更改。
fanjy
2022/06/04
2.3K0
Excel技巧:创建数字列表的2种基本方法
访问列表中的值
#!/usr/bin/python list1 = ['physics', 'chemistry', 1997, 2000] list2 = [1, 2, 3, 4, 5, 6, 7 ] print "list1[0]: ", list1[0] print "list2[1:5]: ", list2[1:5]
用户8442333
2021/05/27
5.7K0
使用Python删除列表中每第3个数字直到列表为空
前几天在Python最强王者交流群【Chloe】问了一道Python处理的问题,如下图所示。
前端皮皮
2022/08/17
1.6K0
使用Python删除列表中每第3个数字直到列表为空
使用Java创建一个待办事项列表
当涉及到Java实战时,有许多有趣且实用的项目可以探索。在本文中,我将向您介绍一个Java实战项目:创建一个简单的待办事项列表(ToDo List)应用程序。这个项目将帮助您运用Java编程技能,同时构建一个有用的工具来管理任务和待办事项。
海拥
2023/09/15
5860
列表:创建列表
列表是Tcl语言中最重要的一种数据结构。什么是列表?列表是元素的有序集合,各个元素可以包含任何字符串,例如空格,反斜杠,换行符等。列表表现为特定结构的字符串,这意味着可以把它们赋值给一个变量,可以把它们做为参数传给命令,可以把它们嵌套到其他列表中。
Lauren的FPGA
2019/10/30
2.4K0
创建一个Spotify播放列表
作者 | Merlin Schäfer 编译 | VK 来源 | Towards Data Science
磐创AI
2021/05/10
1.7K0
【说站】python处理数字列表的函数
(1)range()函数的参数不仅包括开始位置和终止位置,还指定步骤长度,也就是说,我们可以使用该函数生成等参数列。
很酷的站长
2022/11/23
6350
【说站】python处理数字列表的函数
Python把列表中的数字尽量等分成n份
问题描述:假设一个列表中含有若干整数,现在要求将其分成n个子列表,并使得各个子列表中的整数之和尽可能接近。 下面的代码并没有使用算法,而是直接将原始列表分成n个子列表,然后再不断地调整各个子列表中的数字,从元素之和最大的子列表中拿出最小的元素放到元素之核最小的子列表中,重复这个过程,知道n个子列表足够接近为止。 import random def numberSplit(lst, n, threshold): '''lst为原始列表,内含若干整数,n为拟分份数 threshold为各子列表
Python小屋屋主
2018/04/17
3.2K0
Python把列表中的数字尽量等分成n份
wordpress数字分页列表导航实现
  前面我们用了自定义的方式来实现wordpress数字分页,其实wordpress是已经有集成了Numbered Pagination相关的函数,我们直接调用就可以。具体实现方法如下代码调用
ytkah
2019/07/27
1.2K0
分享一个纯CSS样式,显示不同颜色数字的排行榜列表
声明:本文由w3h5原创,转载请注明出处:《分享一个纯CSS样式,显示不同颜色数字的排行榜列表》 https://www.w3h5.com/post/241.html
德顺
2019/11/13
3.4K0
分享一个纯CSS样式,显示不同颜色数字的排行榜列表
在 Flutter 移动应用程序中创建一个列表
Flutter 是一个流行的开源工具包,它可用于构建跨平台的应用。在文章《用 Flutter 创建移动应用》中,我已经向大家展示了如何在 Linux 中安装 Flutter 并创建你的第一个应用。而这篇文章,我将向你展示如何在你的应用中添加一个列表,点击每一个列表项可以打开一个新的界面。这是移动应用的一种常见设计方法,你可能以前见过的,下面有一个截图,能帮助你对它有一个更直观的了解:
用户1880875
2021/09/06
3.1K0
python中列表的使用
情景:列表应该是数据处理时经常使用到一种数据类型,可以有序、组合的操作值存储,是很实用的函数。。。这是最后一篇整理的笔记,发现排版很浪费时间,也得不到交流,还是用类似onenote写笔记的方式快。
py3study
2020/01/14
5.4K0
使用 Python 创建使用 for 循环的元组列表
Python 的关键数据结构是列表和元组。元组元素一旦设置,就无法更改。这称为不可变性。但是列表元素可以在初始化后修改。在处理需要组合在一起的数据时,for 循环用于创建元组列表。列表比元组更具适应性,因为它们能够被修改。本教程演示如何使用 for 循环创建元组列表,从而简化重复性任务。
很酷的站长
2023/08/11
4060
使用 Python 创建使用 for 循环的元组列表
盘点一个Python中列表合并的问题
前几天在Python钻石交流群【海南菜同学】问了一个Python列表合并的问题,提问截图如下:
Python进阶者
2022/11/14
9230
盘点一个Python中列表合并的问题
用于查找子列表总和的 Python 程序
以下程序返回子列表的总和,即使用 for 循环返回给定开始和结束索引的元素总和 −
很酷的站长
2023/02/23
1.8K0
用于查找子列表总和的 Python 程序
使用Python按另一个列表对子列表进行分组
在 Python 中,我们可以使用各种方法按另一个列表对子列表进行分组,例如使用字典和使用 itertools.groupby() 函数,使用嵌套列表推导。在分析大型数据集和数据分类时,按另一个列表对子列表进行分组非常有用。它还用于文本分析和自然语言处理。在本文中,我们将探讨在 Python 中按另一个列表对子列表进行分组的不同方法,并了解它们的实现。
很酷的站长
2023/08/11
4760
使用Python按另一个列表对子列表进行分组
点击加载更多

相似问题

从一个数字列表中获取所有可能的总和

45

具有列表迭代的数字列表的总和

311

使用列表理解创建2-数字元组列表与所有可能的对最多N。

33

Python:使用for循环的数字列表的总和

31

我需要帮助来创建一个算法,以返回一个数字列表中可能的数字组列表

129
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文