找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 594|回复: 1

python语法问题 for后边加if 判断

1

主题

1

帖子

1

积分

贫民

积分
1
heres 发表于 2017-7-23 10:34:34 | 显示全部楼层 |阅读模式
楼主python小白一个,只有C/C++基础。最近在研究一段关于强化学习NEC的算法,在看到args.layer_sizes = [int(i) for i in (args.layer_sizes.split(',') if args.layer_sizes else [])]这句话时候疑惑不解,for 后边加if是什么意思,for后边还没有加“:”这个语句为什么还合法?有没有什么相似的例子呢,多谢!
  1. if __name__ == '__main__':

  2.     parser = argparse.ArgumentParser()#创建一个解析对象
  3.     parser.add_argument('--env', type=str, default='CartPole-v0',
  4.                        help='Name of Gym environment')#向该对象中添加要关注的命令行参数和选项。

  5.     parser.add_argument('--training_iters', type=int, default=500000,
  6.                        help='Number of training iterations to run for')
  7.     parser.add_argument('--display_step', type=int, default=2500,
  8.                        help='Number of iterations between parameter prints')

  9.     parser.add_argument('--memory_size', type=int, default=1000,
  10.                        help='Size of DND dictionary')
  11.     parser.add_argument('--replay_memory_size', type=int, default=1000,
  12.                        help='Size of replay memory')
  13.     parser.add_argument('--batch_size', type=int, default=32,
  14.                        help='Size of batch for Q-value updates')

  15.     parser.add_argument('--beta', type=float, default=0, # see particle value functions
  16.                        help='Beta for adjusted returns')

  17.     parser.add_argument('--discount', type=float, default=0.9,
  18.                        help='Discount factor')
  19.     parser.add_argument('--epsilon', type=float, default=0.1,
  20.                        help='Initial epsilon')
  21.     parser.add_argument('--epsilon_final', type=float, default=None,
  22.                        help='Final epsilon')
  23.     parser.add_argument('--epsilon_anneal', type=int, default=None,
  24.                        help='Epsilon anneal steps')
  25.     parser.add_argument('--learning_rate', type=float, default=0.001,
  26.                        help='Learning rate for TD updates')
  27.     parser.add_argument('--reg', type=float, default=0, #0.1 seems to work here
  28.                        help='Regularization parameter for network')

  29.     parser.add_argument('--layer_sizes', type=str, default='64',
  30.                        help='Hidden layer sizes for network, separate with comma')

  31.     parser.add_argument('--chk_dir', type=str, default=None,
  32.                        help='data directory to save checkpoints')
  33.     parser.add_argument('--chk_name', type=str, default='model',
  34.                        help='Name to save checkpoints as')

  35.     parser.add_argument('--resume_from', type=str, default=None,
  36.                        help='Location of checkpoint to resume from')

  37.     parser.add_argument('--play_from', type=str, default=None,
  38.                        help='Location of checkpoint to play game from (remember, you need the same layer sizes!)')

  39.     args = parser.parse_args()#调用parse_args()方法进行解析。

  40.     if args.epsilon_final == None:
  41.         args.epsilon_final = args.epsilon
  42.     if args.epsilon_anneal == None:
  43.         args.epsilon_anneal = args.training_iters

  44.     args.layer_sizes = [int(i) for i in (args.layer_sizes.split(',') if args.layer_sizes else [])]

  45.     print args

  46.     tf.app.run()
复制代码

回复

使用道具 举报

3

主题

208

帖子

208

积分

侠客

积分
208

热心会员

uitb 发表于 2017-7-23 12:53:20 | 显示全部楼层
这个是列表生成式,等价于一个for循环生成列表,说白了就是把一个循环缩写成了一句,是Python的一个语法糖,几句话讲不大清楚,你可以搜索一下Python列表生成式的知识,很简单,一看就会
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表