【问题标题】:Isolating/indexing/ranging through a list object tuple set通过列表对象元组集隔离/索引/范围
【发布时间】:2020-05-30 19:05:55
【问题描述】:

所以基本上我有一个像这样的元组集。

tuple_set = [('name1', 'score'), ('name2', 'score'), ('name3', 'score')]

它基本上是更大的名称/分数字典中的特定列表。我需要将 name1、name2 和 name3 隔离在可以迭代的列表中。

如果我可以通过它,它也可能有效,但我不能获取列表对象/元组集的范围。

同样附加到这样的列表也行不通,因为它只会放置 name1s 的列表

a_list = []

for stuff in tuple_set:
    a_list.append(tuple_set[0][0])

输出:a_list = ["name1", "name1", "name1"]

有人知道解决办法吗?

【问题讨论】:

  • 看看你添加了什么。 我需要将 name1、name2 和 name3 隔离在我可以迭代的东西中,比如一个列表。我不确定我是否理解正确,你能详细说明一下吗?
  • 我也投票决定关闭这个作为一个错字,因为唯一的问题是你不断地附加相同的元素。

标签: python list object tuples iteration


【解决方案1】:

您的循环从不使用迭代变量,它只是一遍又一遍地添加相同的元素。实际使用循环变量(最好通过解包为有用的变量名)并且一切正常:

for name, score in tuple_set:
    a_list.append(name)

或将其作为list 理解的一行:

a_list = [name for name, score in tuple_set]

【讨论】:

  • 啊哇,我很慢。谢谢哥们。有时候我的想法不正确
【解决方案2】:

您也可以使用zip 方法解决此问题,如下所示:

 print(list(list(zip(*tuple_set))[0]))

* 用于解压缩 tuple_set 中的参数,特别是第一项,即访问 0 并返回 names

希望有帮助:)

【讨论】:

    【解决方案3】:

    如果您认为在迭代 tuple_list 时您可以通过迭代访问每个元素,那么您的代码将进行微小的更改,因此在一次迭代中您可以从变量 stuff 中获取您的第一个元素这就是你想要的name

    a_list = []
    
    for stuff in tuple_set:
        a_list.append(stuff[0])
    

    也许您会感到困惑,因为您可以使用作业的每个元素索引:

    a_list = []
    
    for index in range(tuple_set):
        a_list.append(tuple_set[index][0])
    

    您还可以像@ShadowRanger 建议的那样解压缩其他 2 中的每个元素(名称和分数):

    for name, score in tuple_set:
        a_list.append(name)
    

    如果您喜欢在一行中完成工作,您可以使用列表推导:

    a_list = [s[0] for s in tuple_set]
    

    或:

    a_list = [n for n, _ in tuple_set]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-04
      • 2021-07-30
      • 2017-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-31
      • 1970-01-01
      相关资源
      最近更新 更多