python小白一个,只有C/C++基础。最近在研究一段关于强化学习NEC的算法,在看到args.layer_sizes = [int(i) for i in (args.layer_sizes.split(',') if args.layer_sizes else [])]这句话时候疑惑不解,for 后边加if是什么意思,for后边还没有加“:”这个语句为什么还合法?有没有什么相似的例子呢,多谢!
`if __name__ == '__main__':
parser = argparse.ArgumentParser()#创建一个解析对象
parser.add_argument('--env', type=str, default='CartPole-v0',
help='Name of Gym environment')#向该对象中添加要关注的命令行参数和选项。
parser.add_argument('--training_iters', type=int, default=500000,
help='Number of training iterations to run for')
parser.add_argument('--display_step', type=int, default=2500,
help='Number of iterations between parameter prints')
parser.add_argument('--memory_size', type=int, default=1000,
help='Size of DND dictionary')
parser.add_argument('--replay_memory_size', type=int, default=1000,
help='Size of replay memory')
parser.add_argument('--batch_size', type=int, default=32,
help='Size of batch for Q-value updates')
parser.add_argument('--beta', type=float, default=0, # see particle value functions
help='Beta for adjusted returns')
parser.add_argument('--discount', type=float, default=0.9,
help='Discount factor')
parser.add_argument('--epsilon', type=float, default=0.1,
help='Initial epsilon')
parser.add_argument('--epsilon_final', type=float, default=None,
help='Final epsilon')
parser.add_argument('--epsilon_anneal', type=int, default=None,
help='Epsilon anneal steps')
parser.add_argument('--learning_rate', type=float, default=0.001,
help='Learning rate for TD updates')
parser.add_argument('--reg', type=float, default=0, #0.1 seems to work here
help='Regularization parameter for network')
parser.add_argument('--layer_sizes', type=str, default='64',
help='Hidden layer sizes for network, separate with comma')
parser.add_argument('--chk_dir', type=str, default=None,
help='data directory to save checkpoints')
parser.add_argument('--chk_name', type=str, default='model',
help='Name to save checkpoints as')
parser.add_argument('--resume_from', type=str, default=None,
help='Location of checkpoint to resume from')
parser.add_argument('--play_from', type=str, default=None,
help='Location of checkpoint to play game from (remember, you need the same layer sizes!)')
args = parser.parse_args()#调用parse_args()方法进行解析。
if args.epsilon_final == None:
args.epsilon_final = args.epsilon
if args.epsilon_anneal == None:
args.epsilon_anneal = args.training_iters
args.layer_sizes = [int(i) for i in (args.layer_sizes.split(',') if args.layer_sizes else [])]
print args
tf.app.run()