我有一个月份变量,它是元组列表的列表。每个列表代表一个星期,每一天都是一个月中的一天和星期几的元组。我希望让我的月份成为月日列表的列表。我试着这样做:
for week in month:
week = [day[0] for day in week]
对于 [[(1, 1), (2, 2)], [(3, 3), (4, 4)]]
我希望得到 [[1 , 2], [3, 4]]
,但列表没有改变。根据我对 python 的理解,我的代码非常好,那么我错过了什么? week
不是指一个月中的每一周吗?
最佳答案
不,您迭代的变量永远不是“引用”(如 C++ 的引用)。
您应该将for
循环理解为
month_iter = iter(month)
try:
while True:
week = next(month_iter)
# here begins your code
week = [day[0] for day in week]
# here ends your code
except StopIteration:
pass
很明显,第二次赋值不会影响month
的内容。
你可以写
month = [[day[0] for day in week] for week in month]
替换整个 month
列表,或使用 enumerate
,如 @Ivo's answer 中所述.
关于python - 无法在列表中更改列表的内容。谁能解释为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3590222/