首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建没有数字的X到Y列表,具有相同的数字(11、22、33等)

创建没有数字的X到Y列表,具有相同的数字(11、22、33等)
EN

Stack Overflow用户
提问于 2022-09-20 02:30:13
回答 3查看 63关注 0票数 -2

我需要打印列表中没有相同数字(例如: 22,33 )的所有数字。

代码语言:javascript
复制
x,y=list(map(int,input().split()))
l=[]
m=[]
for i in range(x,y+1):
    l.append(i)
    for j in range(0,len(l)):
        unit = l[j] % 10 
        while (l[j] != 0):
            curr = l[j] %10
            l[j]=l[j]//10
            if(curr != unit):
                m.append(l[j])
        print(m)

样本输入:10,20

样本输出:10,12,13,14,15,16,17,18,19,20 (11被删除)

我的输出:[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

EN

回答 3

Stack Overflow用户

发布于 2022-09-20 03:00:13

根据输入和输出的示例,要删除具有相同数字的数字。

因此,解决办法如下:

代码语言:javascript
复制
x, y = list(map(int,input().split()))
ans = []

for i in range(x, y + 1):
    list_num = list(str(i))
    if list_num.count(str(i % 10)) != len(str(i)):
        ans.append(i)

print(*ans)
票数 0
EN

Stack Overflow用户

发布于 2022-09-20 03:09:54

range()返回一个迭代器。您不关心以前或将来的数字,所以您不需要存储除输出之外的任何列表。

专注于孤立你的逻辑。一个数字拥有相同的数字意味着什么?例如,如果您唯一地计数所有数字为1,那么您就有相同的数字。使它成为一种功能

代码语言:javascript
复制
from collections import defaultdict
def all_same(x):
    vals = defaultdict(int)
    while x != 0:
        x, tens = divmod(x, 10)
        vals[tens] += 1
    return len(vals) == 1

x, y = list(map(int,input().split()))
print(','.join( str(v) for v in range(x, y + 1) if not all_same(v) ))
票数 0
EN

Stack Overflow用户

发布于 2022-09-20 03:14:33

代码语言:javascript
复制
x, y = list(map(int, input().split()))

result = []

for i in range(x, y+1):
    counts = [0] * 10
    n = i
    while n > 0:
        n, remainder = divmod(n, 10)
        counts[remainder] += 1
    if max(counts) == 1:
        result.append(i)

如果允许将数字转换为字符串,则可以这样做。

代码语言:javascript
复制
result = [n for n in range(x, y + 1) if len(str(n)) == len(set(str(n)))]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73781041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档