我如何操纵我的清单?

时间:2018-01-29 13:10:37

标签: python list

data = ['10', '0', '1915', '387', '1933', '402']

这就是我拥有的那种数据。 我想要的是将data[2]data[4]进行比较 和data[3]data[5] 并将data[2]data[2]的值放在data[4]内 与data[3]data[5]

相同

所以这个例子的最终结果是:

['10', '0', '1933', '402', '1915', '382']

5 个答案:

答案 0 :(得分:2)

这是另一个,只是有选择:

swap = [(2, 4), (3, 5)]

for s in swap:
    if int(data[s[1]]) > int(data[s[0]]):
        data[s[0]], data[s[1]] = data[s[1]], data[s[0]]

答案 1 :(得分:1)

像这样:

data = ['10', '0', '1915', '387', '1933', '402']

# Convert strings to int
result = [int(i) for i in data]

# sorted works with numeric values.
# This uses tuple unpacking, even though sorted returns a list
result[2], result[4] = sorted([result[2], result[4]], reverse=True)  
result[3], result[5] = sorted([result[3], result[5]], reverse=True)

# cast ints back to str as per spec
result = [str(i) for i in result]

这是输出:

>>> data = ['10', '0', '1915', '387', '1933', '402']
... 
... # Convert strings to int
... result = [int(i) for i in data]
... 
... # sorted works with numeric values.
... # This uses tuple unpacking, even though sorted returns a list
... result[2], result[4] = sorted([result[2], result[4]], reverse=True)  
... result[3], result[5] = sorted([result[3], result[5]], reverse=True)
... 
... # cast ints back to str as per spec
... result = [str(i) for i in result]
>>> result
['10', '0', '1933', '402', '1915', '387']

答案 2 :(得分:1)

for i in range(2, len(data),2):
    if i+2 < len(data) and data[i+2] > data[i]:
        temp  = data[i]
        data[i] = data[i+2]
        data[i+2] = temp

答案 3 :(得分:0)

如果手头的任务是手动编码;

创建一个列表,我们将使用该列表将数据断言到最后。这将用于存储您想要的列表的新订单

order_list = []

我们插入数据的第一个和第二个元素,因为它没有被操纵或重新排序。

order_list.append(data[0])
order_list.append(data[1])

现在我们检查数据[2]和数据[4]

中哪个更大
if data[2] > data[4]:
    order_list.append(data[2])
else:
    order_list.append(data[2])

然后使用数据元素3和5重复此操作。

然后,您可以按data = order_list将新列表指定为数据,或者返回新列表。

如果任务不要求你这样做;有一个内置函数max(),它返回传递给函数

的两个元素中最大的一个

答案 4 :(得分:0)

如果您希望交换列表中的项目,而不是仅设置为max,则以下代码有效:

def swap(list, i, j):
    buffer = list[i]
    list[i] = list[j]
    list[j] = buffer
    return list

data = ['10', '0', '1915', '387', '1933', '402']

print(data)

if data[4] > data[2]:
    swap(data, 4, 2)

if data[5] > data[3]:
    swap(data, 5, 3)

print(data)