社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  问与答

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

heres_y • 7 年前 • 1942 次点击  

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()

`

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/2729
 
1942 次点击  
文章 [ 1 ]  |  最新文章 7 年前
Py站长
Reply   •   1 楼
Py站长    7 年前

迭代式的写法

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

相当于

if args.layer_sizes:
    index =0 
    for i in (args.layer_sizes.split(','):
             args.layer_sizes[index]=int(i)
                 index+=1
else:
   args.layer_sizes=[]