数字列表

时间:2015-04-21 02:56:49

标签: python numbers

我想要输入一个数字,例如:30,它会打印出一对数字列表,每对数字之间的差异为1。

这样的事情:     10,     12,     21,     23

数字如:1234,1021,1212

2 个答案:

答案 0 :(得分:2)

只是有这样的东西

num=30
i=10
retArr=[]
while i<num:
 temp=str(i)
 if len(temp)<2:
    i++
    continue
 else:
    diffNum=abs(ord(str[0])-ord(str[1]))
    if diffNum==1:
       retArr.append(diffNum)
    i++

for i in range(0,len(retArr)):
    print retArr[i] 

这应该适用于两位数字,可以修改为适合您喜欢的任何数字

答案 1 :(得分:0)

如果我理解正确,你想找到一些数字,每对数字之间的差异为1。

我不打算编写所有代码,但我会展示一些例子。

首先,对所有两位数字进行排列(或者只使用for循环)。

lst = []
for i in range(10,100): # could use xrange()
    si = str(i)
    if abs(int(si[0])-int(si[1])) == 1:
        lst.append(i)

print lst
#[10, 12, 21, 23, 32, 34, 43, 45, 54, 56, 65, 67, 76, 78, 87, 89, 98]

您也可以使用列表理解来创建此列表:

lst = [i for i in xrange(10,100) if abs(int(str(i)[0])-int(str(i)[1])) == 1]
#[10, 12, 21, 23, 32, 34, 43, 45, 54, 56, 65, 67, 76, 78, 87, 89, 98]

然后,您可以将所有数字转换为字符串,并使用排列生成更多4,6,8等数字数字

lst = [str(i) for i in lst]

导入itertools并进行排列:

import itertools
numberOfPairs = 2 # change this
lstNew = ["".join(i) for i in itertools.permutations(lst,numberOfPairs)]

lstNew现在是:

['1012', '1021', '1023', '1032', '1034', '1043', '1045', '1054', 
 '1056', '1065', '1067', '1076', '1078', '1087', '1089', '1098',
 '1210', '1221', '1223', '1232', '1234', '1243', '1245', '1254',
 '1256', '1265', ... , '9889']

如果需要,可以将它们全部转换回字符串中的整数:

lstNew = [int(i) for i in lstNew]

哪会给:

[1012, 1021, 1023, 1032, 1034, 1043, 1045, 1054,
 1056, 1065, 1067, 1076, 1078, 1087, 1089, 1098,
 1210, 1221, 1223, 1232, 1234, 1243, 1245, 1254,
 1256, 1265, ... , 9889]

我想我只是写了这一切......