这是我的第一个 Python 程序,一个将文件权限的 Unix 八进制代码转换为符号形式的小实用程序:
s=raw_input("Octal? ");
digits=[int(s[0]),int(s[1]),int(s[2])];
lookup=['','x','w','wx','r','rx','rw','rwx'];
uout='u='+lookup[digits[0]];
gout='g='+lookup[digits[1]];
oout='o='+lookup[digits[2]];
print(uout+','+gout+','+oout);
有没有利用某种“列表处理”来缩短这段代码的方法?例如,一次性将 int
函数应用于 s
的所有三个字符,而无需进行显式索引。并一次使用整个列表 digits
索引到 lookup
?
最佳答案
digits=[int(s[0]),int(s[1]),int(s[2])];
可以写成:
digits = map(int,s)
或:
digits = [ int(x) for x in s ] #list comprehension
看起来您可能正在使用 python3.x(或计划在未来根据您的函数式打印使用情况使用它),除非您想进一步深入,否则您可能想要选择列表理解并使用 zip
,如后面的答案之一所示。
关于python - 如何简化 Python 中的列表处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16722436/