【发布时间】:2017-03-07 09:47:32
【问题描述】:
我正在尝试创建属于 linux 组的所有用户的扁平列表。
从grp.getgrall() 返回的结构是:
[
grp.struct_group(
gr_name='plugdev',
gr_passwd='x',
gr_gid=46,
gr_mem=[
'rolf',
'public'
])
]
其中组的成员在gr_mem=[]中的列表形式
我可以使用以下内容:
import grp
plugdev_members = []
for group in grp.getgrall():
if "plugdev" in group.gr_name:
for user in group.gr_mem:
plugdev_members.append(user)
返回一个平面列表:
['rolf','public']
使用列表推导:
plugdev_members = [
mem for mem in [
m.gr_mem for m in grp.getgrall()
if "plugdev" in m.gr_name
]
]
or
plugdev_members = [
m.gr_mem for m in grp.getgrall()
if "plugdev" in m.gr_name
]
我在一个列表中得到一个列表:
[['rolf', 'public']]
我确信一定有一种方法可以使用列表理解返回一个扁平列表,我只是没有看到它。根据第一个示例,我知道我需要在第一个循环中进行第二个循环,但我只是没有做对。
任何提示将不胜感激
【问题讨论】: