【问题标题】:(Python) converting a list of integers into tuples/sets changes positions of integers(Python)将整数列表转换为元组/集合更改整数的位置
【发布时间】:2018-08-19 04:46:32
【问题描述】:

我要转换

E =[1,6,1,7,2,3,2,6,3,2,3,8,4,5,4,7,5,4,5,9,6,1,6,7,6,2,7,1,7,6,7,4,8,9,8,3,9,8,9,5,]

进入

E = [{1,6},{1,7},{2,3},{2,6},{3,2},{3,8},{4,5},{4,7},{5,4},{5,9},{6,1},{6,7},{6,2},{7,1},{7,6},{7,4},{8,9},{8,3},{9,8},{9,5}

但我明白了

E=[[{1, 6}], [{1, 7}], [{2, 3}], [{2, 6}], [{2, 3}], [{8, 3}], [{4, 5}], [{4, 7}], [{4, 5}], [{9, 5}], [{1, 6}], [{6, 7}], [{2, 6}], [{1, 7}], [{6, 7}], [{4, 7}], [{8, 9}], [{8, 3}], [{8, 9}], [{9, 5}]]

相反,集合 {.} 中的顺序也会混淆(不保留顺序)。

为什么会这样,我该如何解决?

我的代码是:

def convert_to_set(x):
    sets = []
    l = len(x)
    for i in range(0,l,2):
        set1 = []      
        set1.append({x[i],x[i+1]})
        sets.append(set1)
    return sets

【问题讨论】:

  • set 是无序的

标签: python python-3.x list set tuples


【解决方案1】:

如果您想保留订单,您需要从 set 切换到 tuple。这样做很容易:

list(zip(E[::2], E[1::2]))

这给了你:

[(1, 6),
 (1, 7),
 (2, 3),
 (2, 6),
 (3, 2),
...

【讨论】:

  • 太棒了..这个表达式是什么意思E[1::2]
  • 感谢您的反馈!我将尝试为我的代码的其他部分使用元组而不是集合。 :)
【解决方案2】:

一个选项如下:

sets = [{E[i],E[i+1]} for i in range(0,len(E)-1,2)]

此外,集合是无序的,因此您无法保持顺序。

【讨论】:

  • OP的重点是保持顺序。所以,你的答案不是他/她想要的。
猜你喜欢
  • 1970-01-01
  • 2012-04-21
  • 2012-08-28
  • 2020-04-14
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 2014-12-23
  • 1970-01-01
相关资源
最近更新 更多