我有一个像这样的元组列表:
[('Ben', '5 0 0 0 0 0 0 1 0 1 -3 5 0 0 0 5 5 0 0 0 0 5 0 0 0 0 0 0 0 0 1 3 0 1 0 -5 0 0 5 5 0 5 5 5 0 5 5 0 0 0 5 5 5 5 -5'),
('Moose', '5 5 0 0 0 0 3 0 0 1 0 5 3 0 5 0 3 3 5 0 0 0 0 0 5 0 0 0 0 0 3 5 0 0 0 0 0 5 -3 0 0 0 5 0 0 0 0 0 0 5 5 0 3 0 0'),
...]
它会持续一段时间。
我对python(以及一般的编程)比较陌生,所以我很难弄清楚如何使用每个元组的item [1]元素修改创建一个新元组,但是item [0]元素每一个都没有动过。我想做的就是将每个元组的第二个元素放入所有这些数字的列表中。我试着只是.split()它,但元组是不可变的。 那你怎么解决这个问题呢?
最终它是一个开始练习的例子。我们根据每部电影的收视率制作了一部非常原始的电影推荐人,每一部电影都是该电影对应的评级。
答案 0 :(得分:5)
由于元组是不可变的,你必须根据旧元组创建新元素:
data = [('Ben', '5 0 0 0 0 0 0 1 0 1 -3 5 0 0 0 5 5 0 0 0 0 5 0 0 0 0 0 0 0 0 1 3 0 1 0 -5 0 0 5 5 0 5 5 5 0 5 5 0 0 0 5 5 5 5 -5'),
('Moose', '5 5 0 0 0 0 3 0 0 1 0 5 3 0 5 0 3 3 5 0 0 0 0 0 5 0 0 0 0 0 3 5 0 0 0 0 0 5 -3 0 0 0 5 0 0 0 0 0 0 5 5 0 3 0 0')]
data = [(name, ratings.split()) for name, ratings in data]
如果您不熟悉列表推导,这相当于
new_data = []
for name, ratings in data:
new_data.append( (name, ratings.split()) )
data = new_data