c语言或c++如何改变list的任意项的值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言或c++如何改变list的任意项的值相关的知识,希望对你有一定的参考价值。
举例:
list <int> list_test;
list_test.push_back(2);//第一项
list_test.push_back(1);//第二项
list_test.push_back(3);//第三项
/*此时list_a内按顺序为2,1,3*/
问题:
如果我想让list_test第二项里的int数值1加上5应该如何做。
即最终目的为:
list_test内按顺序值为2,6,3
PS:只限定C语言或C++语法。
刚记起来C语言好像没有list的概念,那么请大家就C++如何实现上述问题作答。
下面回答中那位tmupz122请好好审题再答,不是幼儿园孩子了。就是幼儿园孩子也是懂得基本区分事物吧。
p = list_test.begin();
p++;
*p += 5;本回答被提问者采纳
Python列表,用匹配索引改变匹配项的值
【中文标题】Python列表,用匹配索引改变匹配项的值【英文标题】:Python lists, change the value of matching items with matching index 【发布时间】:2021-01-07 20:13:28 【问题描述】:如果我有
list1 = [1, 2, 3, 6]
list2 = [4, 3, 5, 6]
如何更改两个列表之间匹配的任何值?仅当索引也匹配时
想要的输出是
list1 = [1, 2, 3, 'match']
我在用这个
for idx,x in enumerate(list1):
if x in list2:
list1[idx] = 'match'
但这取代了 3 和 6
【问题讨论】:
【参考方案1】:使用zip
同时迭代两个列表并检查每个值,而不是使用in
:
list3 = ['match' if x == y else x for x, y in zip(list1, list2)]
在常规形式中是:
list3 = []
for x, y in zip(list1, list2):
if x == y:
list3.append(x)
else:
list3.append('match')
【讨论】:
这些都没有给我想要的输出 [1, 2, 3, match] 你确定你不是在看list3而不是list1吗?编辑 list1 是没有意义的,因为那是您的输入数据。 如果您真的想编辑 list1,只需将 list3 替换为 list1 并删除第二个示例中的第一行。【参考方案2】:这是实现相同结果的另一种方法:
list1 = ['match' if v == list2[k] else v for (k, v) in enumerate(list1)]
【讨论】:
这实际上根本不是最好的答案。 可能不会,但它比您的答案快大约 5%。但是,zip 方法更快。【参考方案3】:如果您将两个列表压缩在一起,您可以比较它们的项目 - 如果您想保留原始列表并可能编写比列表理解更容易混淆的代码,您可以执行以下操作:
list1 = [1, 2, 3, 6]
list2 = [4, 3, 5, 6]
for i, t in enumerate(zip(list1, list2)):
a, b = t # unpack the tuple t
if a == b:
list1[i]="match"
最后,list1
是[1, 2, 3, 'match']
。
【讨论】:
【参考方案4】:list(map(lambda a, b: a if a != b else 'match', list1, list2))
[1, 2, 3, 'match']
【讨论】:
以上是关于c语言或c++如何改变list的任意项的值的主要内容,如果未能解决你的问题,请参考以下文章
求C语言高手解答 求e的近似值,直到某一项的值小于或等于10-7为止。 将下列程序补充完整。