【问题标题】:Trouble with Tuples and Lists in PythonPython 中元组和列表的问题
【发布时间】:2017-09-22 07:49:29
【问题描述】:

我需要找到一种方法来获取数据集并更改一些值。

数据格式如下:(姓名、年龄、财富)

list = [(Donald, 25, 500), (Chris, 28, 450), (Susan, 23, 650)]

我需要使用for 循环以及元组和列表的索引来将每个人的财富精确地更改为 1000。

【问题讨论】:

  • 元组是不可变的,一旦构造,就不能改变元素。你自己试过什么?
  • 当你尝试这样做时,你在哪里卡住了?请分享您的尝试,以便我们帮助纠正那些
  • 感谢您的帮助。我很难说出我在哪里卡住了,因为我没有上过编程课。我正在学习一门课程,但无法参加,因为这些课程都与我日程表上的其他课程重叠,而且教授有“不提问”的政策。这实际上是我第一次看到 Python,我只是在网上搜索试图解决这些问题。
  • 好的,所以我还是卡住了。这是我尝试过的: list = [(Donald, 25, 500), (Chris, 28, 450), (Susan, 23, 650)] for i, (name, age, fortune) in enumerate(list): list[i] = [(x,y,1000) for (x,y,z) in list] print (list) 这是我运行它时得到的: [[('Donald', 25, 1000), ('Chris', 28, 1000), ('Susan', 23, 1000)], [(('Donald', 25, 1000), ('Chris', 28, 1000), 1000), ('Chris' , 28, 1000), ('Susan', 23, 1000)], [(('Donald', 25, 1000), ('Chris', 28, 1000), 1000), ((('Donald', 25 , 1000), ('Chris', 28, 1000), 1000), ('Chris', 28, 1000), 1000), ('Susan', 23, 1000)]]

标签: python list tuples


【解决方案1】:

你可以这样做:

list = [(Donald, 25, 500), (Chris, 28, 450), (Susan, 23, 650)]

for i in range(len(list)):
    list[i] = (list[i][0],list[i][1],1000)

由于tuple 是不可变的,您需要创建一个全新的tuple

您也可以这样创建一个新的list

list = [(Donald, 25, 500), (Chris, 28, 450), (Susan, 23, 650)]
list2 = []
for t in list:
    list2.append(t[0],t[1],1000)

这是一种类似于for-each 的方式来遍历您的列表。

正如@Martijn Pieters♦ 建议的那样,另外两种紧凑而简单的方法是像这样使用list comprehensions

list = [(Donald, 25, 500), (Chris, 28, 450), (Susan, 23, 650)]
list = [(x,y,1000) for (x,y,z) in list]

enumerate() 像这样:

list = [(Donald, 25, 500), (Chris, 28, 450), (Susan, 23, 650)]
for i, (name, age, wealth) in enumerate(list):
    list[i] = (name,age,1000)

【讨论】:

  • 你真的应该了解enumerate(),或者列表推导。
  • 我知道enumerate(),但在我的经验中没有经常使用它,它在这里有什么用处? (不是批评,只是要求学习)
  • 如果你使用for i, (name, age, wealth) in enumerate(lst):,你不需要使用range()或索引。
  • 最后一点,尽量不要使用名字list;你正在掩盖内置的。这可能会导致其他地方出现问题,例如 TypeError: 'list' object is not callable 当您尝试使用 list() 将某些内容转换为列表时。
  • 教别人永远不会太晚;答案是长期存在的,而不仅仅是当前的提问者。
猜你喜欢
  • 1970-01-01
  • 2022-01-21
  • 2013-12-04
  • 1970-01-01
  • 1970-01-01
  • 2017-12-06
  • 1970-01-01
  • 2016-07-02
  • 1970-01-01
相关资源
最近更新 更多