2014-10-28 897 views
-4

我有两个列表,我想知道如何将列表中的第一个元素放到最后的位置,所以我会得到这个最小的绝对差值两个列表并记住它,每次我们将第一个列表放到最后的位置。我希望你明白这个问题.. 名单女人保持不变,我只想通过把第一个元素放在最后的位置,第二个元素放到第一个位置来改变名单男人。 例子 - >男人[172,181,166,172,174,165,169,169,185,168]第一个变化之后...如何将列表中的第一个元素放到最后的地方,python

__author__ = 'Majky' 
woman = [158, 166, 150, 158, 152, 160, 172, 159, 158, 162] 
men = [168, 172, 181, 166, 172, 174, 165, 169, 169, 185] 
biggest_abs = 0 
for x, y in zip(men, woman): 
    print(x, y, abs(x-y)) 
    if biggest_abs < abs(x-y): 
     biggest_abs = abs(x-y) 



print("biggest_abs is ", najvecja_abs) 
+0

试着简化你的代码,添加一段代码和预期的结果......我想标题并不是你想要做的事情吗?它也应该是一个工作代码...变量名称是混合的,缩进错误。 – wenzul 2014-10-28 15:31:45

+0

您可能想要使用'collections.deque'而不是'list',然后调用'rotate(-1)'。 – 2014-10-28 15:36:28

+0

此代码打印列表之间的最大区别。 31是最大的差异..我想获得最小的差异 – user3083561 2014-10-28 15:38:17

回答

3
men = men[1:] + [men[0]] 

是我会做什么。这会对列表进行分片,使得除了第一个元素之外,其他的都包含在内,然后将其添加到最后。

作为示例,当应用于初始值men时,返回[172, 181, 166, 172, 174, 165, 169, 169, 185, 168]

1

不止一种方法去做一件事...这一个编辑到位名单(意为“人”列表中的所有引用看到的变化):

>>> men = [168, 172, 181, 166, 172, 174, 165, 169, 169, 185] 
>>> men.append(men.pop(0)) 
>>> men 
[172, 181, 166, 172, 174, 165, 169, 169, 185, 168] 
0

你的问题还不清楚现在。你可能想对男性的价值与女性的每个价值进行比较。

for m in men: 
    biggest_abs = 0 
    for w in women: 
     a = abs(m-w) 
     if biggest_abs < a: 
      biggest_abs = a 
    print("biggest_abs is ", biggest_abs) 

这将打印中间步骤:

('biggest_abs is ', 18) 
('biggest_abs is ', 22) 
('biggest_abs is ', 31) 
('biggest_abs is ', 16) 
('biggest_abs is ', 22) 
('biggest_abs is ', 24) 
('biggest_abs is ', 15) 
('biggest_abs is ', 19) 
('biggest_abs is ', 19) 
('biggest_abs is ', 35) 

或整体解决方案:

biggest_abs = 0 
for m in men: 
    for w in women: 
     a = abs(m-w) 
     if biggest_abs < a: 
      biggest_abs = a 
print("biggest_abs is ", biggest_abs) 

('biggest_abs is ', 35) 

对于最小差刚刚切换geater到比如果条件更小,得到的值一个有意义的名字

相关问题