首页 > 其他 > 详细

将列表[3,7,0,5,1,8]中大于5元素置为0,小于5的元素置为1

时间:2019-12-03 00:11:52      阅读:125      评论:0      收藏:0      [点我收藏+]

1先给大家展示一个我自己最先做的一个错误示范:

list1 = [3,7,0,5,1,8]

for i in list1:
    if int(i) < 5:
        list1[list1.index(i)]=0

    else:
        list1[list1.index(i)] = 1

print(置换过后的list1为:,list1)

输出的结果为:

置换过后的list1为: [0, 0, 0, 1, 1, 1]

可惜顺序乱了。原因是因为index是从左往右查找第一个匹配值就返回,大于五的数在被替换成1过后,如果后面的元素有数字一的话就会出现问题。

 

2一个投机取巧的方法:

我创建了一个空列表来保存我替换后的值然后直接把列表2的值赋值给了列表1

list1 = [3,7,0,5,1,8]
list2 = []
for i in list1:
    if int(i) < 5:
        list2.append(0)
    elif i == 5:
        list2.append(5)
    else:
        list2.append(1)
list1 = list2
print(置换过后的list1为:,list1)

输出的结果为:

置换过后的list1为: [0, 1, 0, 5, 0, 1]

这次顺序正常了。虽然这样实现目的了,但是增加了一个列表会占用计算机内存,是一个投机取巧的方法。

 

3老师给我演示的方法

list1 = [3,7,0,5,1,8]
for index,i in enumerate(list1):
    if i < 5:
        list1[index] = 0
    elif i > 5:
        list1[index] = 1
print(置换过后的list1为:, list1)

输出的结果为:

置换过后的list1为: [0, 1, 0, 5, 0, 1]

我忘记了老师前面讲过一个enumerate函数,enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

 

希望大家可分享一些建议,和一些新方法给我,谢谢大家!!!

 

将列表[3,7,0,5,1,8]中大于5元素置为0,小于5的元素置为1

原文:https://www.cnblogs.com/ldmb/p/11973323.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!