注册 登录
编程论坛 Python论坛

新手请教:list[]的运算问题

kyletan0808 发布于 2019-04-30 11:46, 2756 次点击
大神们有办法用list[1,2,3,4,5,6,7,8]里面的元素去做乘除运算?
我想实现的是:如果list[]里面的元素能被2整除,就把那个元素用某一特定的元素代替。
7 回复
#2
外部三电铃2019-04-30 11:56
如果逻辑有些复杂,就没必要用列表解析了,还是定义一个函数去实现这个功能吧,定义函数也不复杂。

刚学python的时候,惊讶于它一行可以实现很强大的功能,如果学过ruby,会发现ruby一行能实现的功能更强大。业界给取了个外号:一行党。

把程序写进一行并不是好事,程序也不是越短越好,而是后面自己看的时候约容易理解越好。
#3
kyletan08082019-04-30 12:46
回复 2楼 外部三电铃
感谢关注!其实逻辑并不复杂,就是历遍列表里面的元素(for i in xxx),如果有能被2整除的元素(数字)就替换。。。
但我试了几次都报错,不是元素不能和数字相乘除就是超出index范围。连最后我要print  list[i]都无法实现。以下是我自己写的部分代码,能否指出该怎么写才对?谢谢!
a = ['1','2','3','4','5','6','7','8','9']
b = list(map(int,a)) #字符转换整数
for i in a:
  if b[i]%2 == 0:
     b[i] = " "
print(" ".join(b))

运行之后就是不断报错求指教!
#4
kyletan08082019-04-30 12:54
以下是引用kyletan0808在2019-4-30 12:46:19的发言:

感谢关注!其实逻辑并不复杂,就是历遍列表里面的元素(for i in xxx),如果有能被2整除的元素(数字)就替换。。。
但我试了几次都报错,不是元素不能和数字相乘除就是超出index范围。连最后我要print  list都无法实现。以下是我自己写的部分代码,能否指出该怎么写才对?谢谢!
a = ['1','2','3','4','5','6','7','8','9']
b = list(map(int,a)) #字符转换整数
for i in a:
  if b%2 == 0:
     b = " "
print(" ".join(b))

运行之后就是不断报错求指教!

弄错了 应该是 for i in b
#5
外部三电铃2019-04-30 12:56
以下是引用kyletan0808在2019-4-30 12:46:19的发言:

感谢关注!其实逻辑并不复杂,就是历遍列表里面的元素(for i in xxx),如果有能被2整除的元素(数字)就替换。。。
但我试了几次都报错,不是元素不能和数字相乘除就是超出index范围。连最后我要print  list都无法实现。以下是我自己写的部分代码,能否指出该怎么写才对?谢谢!
a = ['1','2','3','4','5','6','7','8','9']
b = list(map(int,a)) #字符转换整数
for i in a:
  if b%2 == 0:
     b = " "
print(" ".join(b))
 
运行之后就是不断报错求指教!

有那么复杂吗?你是不是从C语言转过来的?python是动态脚本语言,要善于利用它的动态特性
程序代码:
a = ['1','2','3','4','5','6','7','8','9']

def f(x):
    if int(x)%2 == 0:
        return ' '
    else:
        return x

b = map(f, a)

print b

#6
kyletan08082019-04-30 15:54
回复 5楼 外部三电铃
我是没有基础的小白,之前的章节还可以。但到文件,列表的时候开始迷失了
谢谢赐教
#7
王介武2019-05-01 09:02
我是这样写的

a = ['1','2','3','4','5','6','7','8','9']
for i in range(len(a)):
  if int(a[i]) % 2 == 0:
     a[i] = " "
print(" ".join(a))
#8
kyletan08082019-05-04 11:56
回复 7楼 王介武
逻辑对了,我把你的代码段改了一下,想要的效果出来了。谢谢赐教
1