在没有循环的情况下访问容器中的所有 class 个变量
Accessing all class variables in a container without a loop
我有一个列表 'users',其中包含 class 'user' 的对象。每个用户都有一个列表 'records',其中包含 class 'record' 的对象。每条记录都有一个日期时间变量,描述该特定记录的创建时间。
我想创建一个列表,其中包含所有用户记录的所有日期时间变量。我已经使用嵌套循环完成了该操作,但我想还有更聪明的方法吗?
# Add all dates to one list
dateList = list()
for i in range(0,nUsers):
for j in range(0, len(users[i].records)):
dateList.append(users[i].records[j].datetime)
列表理解可能就是你的意思。
date_list = [r.datetime for user in users for r in user.records]
Python 变量应该是 lower_case_with_underscores 而不是 CamelCase。
此外,Python 中的迭代不需要使用索引。您可以直接迭代项目。
你总是不得不使用循环,但你可以在一个列表理解中做到这一点:
date_list = [record.datetime for user in users for record in user.records]
请注意,即使使用单独的循环,在 Python 中,您也应该 永远不要 遍历一个范围,然后使用索引获取元素;总是遍历事物本身,所以 for user in users
等等
首先摆脱索引并迭代对象本身。
dateList = list()
for user in users:
for record in user.records:
dateList.append(record.datetime)
然后你看到你可以使用列表理解。
dateList = [record.datetime for user in users for record in user.records]
您可以使用两个嵌套列表理解:
date_list = [record.datetime for record in
[user.record for user in user_list]]
我有一个列表 'users',其中包含 class 'user' 的对象。每个用户都有一个列表 'records',其中包含 class 'record' 的对象。每条记录都有一个日期时间变量,描述该特定记录的创建时间。
我想创建一个列表,其中包含所有用户记录的所有日期时间变量。我已经使用嵌套循环完成了该操作,但我想还有更聪明的方法吗?
# Add all dates to one list
dateList = list()
for i in range(0,nUsers):
for j in range(0, len(users[i].records)):
dateList.append(users[i].records[j].datetime)
列表理解可能就是你的意思。
date_list = [r.datetime for user in users for r in user.records]
Python 变量应该是 lower_case_with_underscores 而不是 CamelCase。
此外,Python 中的迭代不需要使用索引。您可以直接迭代项目。
你总是不得不使用循环,但你可以在一个列表理解中做到这一点:
date_list = [record.datetime for user in users for record in user.records]
请注意,即使使用单独的循环,在 Python 中,您也应该 永远不要 遍历一个范围,然后使用索引获取元素;总是遍历事物本身,所以 for user in users
等等
首先摆脱索引并迭代对象本身。
dateList = list()
for user in users:
for record in user.records:
dateList.append(record.datetime)
然后你看到你可以使用列表理解。
dateList = [record.datetime for user in users for record in user.records]
您可以使用两个嵌套列表理解:
date_list = [record.datetime for record in
[user.record for user in user_list]]