Discuss / Python / 别人用了1行代码,我用了8行。。。

别人用了1行代码,我用了8行。。。

Topic source

Gingbery

#1 Created at ... [Delete] [Delete and Lock User]

from collections import Iterable L=['Hello', 'World', 18, 'Apple', None] M=list() for s in L: if isinstance(s,Iterable): s=s.lower() M.append(s) print(M)

周周周峰

#2 Created at ... [Delete] [Delete and Lock User]

很明显你和别人的不一样啊,别人的L2里面都是不包括原来L1里面的整数和None,而你把L1里面的整数和None都考虑进去了。 ps:你的代码可以优化一下,判断字符串用isinstance(s,str)就可以了,没必要用是否可以迭代来判断; pps:你对比一下L2和L3的输出就能看出来了:

L1 = ['Apple',1,None,'Hello']
L2 = [s.lower() for s in L1 if isinstance(s,str)]
print(L2)
L3 = []
for s in L1:
    if isinstance(s,str):
        s = s.lower()
    L3.append(s)
print(L3)

哈哈,那就找个按代码行数发计件工资的厂上班好啦. 拿别人8倍的薪水,活活美死.

M.append(s)前面再多加一個Tab,就和一行代碼的效果一樣了。

ilwwwli

#5 Created at ... [Delete] [Delete and Lock User]
L2 = [str(s).lower() for s in L1]

其实这样也只需要一行。。。。

Gingbery

#6 Created at ... [Delete] [Delete and Lock User]

不一样了,之前的列表元素的数据类型都改变了


  • 1

Reply