我正在挑战自己把事情变成这样
if a and b and c:
do_something(x) ## some function
elif a and b and c and d
do_something(x[:-1]) ## the same function but slightly different
像这样
cosa = [do_something(x) for x in X if a and b and c
or
do_something(x[:-1]) for x in X if a and b and c and d]
在 Python 中可以吗?我已经被告知要使用 for 循环,但我很好奇是否有办法处理这个问题,因为函数 do_something
的行为只有一点点变化。
对我想做的事情的更具体描述:
history[chat_name] = [chats.message('chat_type',
line.split(',',4)[3],
line.split(',',4)[1],
line.split(',',4)[2],
line.split(',',4)[4][:-1])
for line
in file
if line.split(',',4)[0] == chat_type
and line.split(',',4)[2] == chat_name]
我正在编写一个应该模拟聊天应用程序的代码。变量 chat_type
表示它是群聊 ('grupo') 还是个人聊天 ('regular')。因为,在谈到聊天组时,只要他们在该组中,谁发送消息并不重要,因此此代码就足够了,可以完成工作。
但是,当涉及个人聊天时,上面的代码使代码包含任何人写给给定收件人的所有消息。我想添加一个条件,如果且仅当 chat_type 设置为“常规”,则代码必须确保发件人是当前用户。
我修正如下:
if chat_type == 'grupo':
history[chat_name] = [chats.message('chat_type',
line.split(',',4)[3],
line.split(',',4)[1],
line.split(',',4)[2],
line.split(',',4)[4][:-1])
for line
in file
if line.split(',',4)[0] == chat_type
and line.split(',',4)[2] == chat_name]
elif chat_type == 'regular':
history[chat_name] = [chats.message('chat_type',
line.split(',',4)[3],
line.split(',',4)[1],
line.split(',',4)[2],
line.split(',',4)[4][:-1])
for line
in file
if line.split(',',4)[0] == chat_type
and line.split(',',4)[2] == chat_name
and line.split(',',4)[1] == self.username] ##this is the extra condition
我希望这有助于回答我的问题。
答案 0 :(得分:0)
这应该是做您需要的正确方法
cosa = [do_something(x) if a and b and c else do_something(x[:-1]) if a and b and c and d for x in X]