Python 数列分类
为了对相同的数字进行分类,有没有比将当前数字与之前或即将出现的数字进行比较更好的解决方案 e、 g.如果我有一系列数字,如:Python 数列分类,python,Python,为了对相同的数字进行分类,有没有比将当前数字与之前或即将出现的数字进行比较更好的解决方案 e、 g.如果我有一系列数字,如:[1.123,1.123,1.223,1.123,2.1,2.1,2.2,2.1,4.011,4.001,4.011,4.1011] 我确实想知道标识所有相同的浮动(不管它是+-1,例如1是1,不管它是1.123还是1.223) 只要我把同一个词的开头和结尾分类(A=1,1,1)(B=2,2,2)(C=4,4,4,4) 准代码/想法: x = [1.123,1.123,1.
[1.123,1.123,1.223,1.123,2.1,2.1,2.2,2.1,4.011,4.001,4.011,4.1011]
我确实想知道标识所有相同的浮动(不管它是+-1,例如1是1,不管它是1.123还是1.223)
只要我把同一个词的开头和结尾分类(A=1,1,1)(B=2,2,2)(C=4,4,4,4)
准代码/想法:
x = [1.123,1.123,1.223,1.123,2.1,2.1,2.2,2.1,4.011,4.001,4.011,4.1011]
x.append(float('-inf'))
for i in range(1, len(x) - 1, 1):
if (x[i] > x[i - 1] and
x[i] > x[i + 1]):
print('msg')
除了在这样的条件下做,还有什么更容易识别它们的方法吗?是否有任何方法可以使用while
循环
像这样的事
x = [1.123,1.123,1.223,1.123,2.1,2.1,2.2,2.1,4.011,4.001,4.011,4.1011]
A =[] #all with 1.123,1.123,1.223,1.123
B = [] #all 2.1,2.1,2.2,2.1
C = [] #4.011,4.001,4.011,4.1011
count=0
while same_numbers_plusmin_1 is True:
if count == 0:
for i in x:
A.append(i)
print('classified first sequence of numbers, with range of 1to2 difference')
if count == 1:
B.append(i)
print('classified second sequence of numbers, with range of 1to2 difference')
if count == 2:
C.append(i)
print('classified third sequence of numbers, with range of 1to2 difference')
else:
count+=1
print('new sequence of same numbers, added to new list)
您可以使用:
现在,就我所能想到的大多数意图而言,拥有一个组列表应该比仍然可以提取的一些独立命名的变量更可取:
A, B, C, *_ = groups
但最有用的数据结构是将分类键映射到数据的字典:
groups = {k: list(g) for k, g in groupby(x, key=int)}
# {1: [1.123, 1.123, 1.223, 1.123],
# 2: [2.1, 2.1, 2.2, 2.1],
# 4: [4.011, 4.001, 4.011, 4.1011]}
您可以使用:
现在,就我所能想到的大多数意图而言,拥有一个组列表应该比仍然可以提取的一些独立命名的变量更可取:
A, B, C, *_ = groups
但最有用的数据结构是将分类键映射到数据的字典:
groups = {k: list(g) for k, g in groupby(x, key=int)}
# {1: [1.123, 1.123, 1.223, 1.123],
# 2: [2.1, 2.1, 2.2, 2.1],
# 4: [4.011, 4.001, 4.011, 4.1011]}
似乎与前面提到的示例一起工作。然而,如果它是一个单位或高或低,它不分组。也就是说,在我的情况下,不应该对数字单位的关系进行分组,而其他一切都应该对应于同一个gorup,例如,这是我的分组,这是错误的,因为148仍然应该在147[147.83999633789062,147.95999145507812,147.95999145507812,147.95999145507812,147.95999145507812],[148.0799865722662],[147.95999145507812、147.95999145507812、147.95999145507812、147.95999145507812]似乎适用于上述示例。然而,如果它是一个单位或高或低,它不分组。也就是说,在我的情况下,不应该对数字单位的关系进行分组,而其他一切都应该对应于同一个gorup,例如,这是我的分组,这是错误的,因为148仍然应该在147[147.83999633789062,147.95999145507812,147.95999145507812,147.95999145507812,147.95999145507812],[148.0799865722662], [147.95999145507812, 147.95999145507812, 147.95999145507812, 147.95999145507812],