|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 qdwxzzy 于 2020-4-9 16:45 编辑
有一句代码实在不能理解,先说明一些情况
1.not_suspended_info 一开始我以为是一个pandas的dateframe类型,但是后来发现不对,存的列数据是一个字典,用到的两列的数据说明:
key 类型 说明
symbol str 标的代码
is_suspended int 是否停牌. 1: 是, 0: 否
找到了一个样本,not_suspended_info 里面存的是一个list[dict]
not_suspended_info = [{'symbol': 'SHSE.600037', 'sec_level': 1, 'multiplier': 1.0, 'margin_ratio': 1.0, 'pre_close': 14.5600004196167, 'upper_limit': 16.02, 'lower_limit': 13.1, 'adj_factor': 5.09191478865, 'info': {'symbol': '', 'sec_type': 0, 'exchange': '', 'sec_id': '', 'sec_name': '', 'sec_abbr': '', 'sec_asset': '', 'price_tick': 0.0, 'trade_n': 0, 'listed_date': None, 'delisted_date': None}, 'is_suspended': 0, 'settle_price': 0.0, 'position': 0, 'pre_settle': 0.0}, {'symbol': 'SHSE.600060', 'sec_level': 1, 'multiplier': 1.0, 'margin_ratio': 1.0, 'pre_close': 15.170000076293945, 'upper_limit': 16.69, 'lower_limit': 13.65, 'adj_factor': 5.4699656415808, 'info': {'symbol': '', 'sec_type': 0, 'exchange': '', 'sec_id': '', 'sec_name': '', 'sec_abbr': '', 'sec_asset': '', 'price_tick': 0.0, 'trade_n': 0, 'listed_date': None, 'delisted_date': None}, 'is_suspended': 0, 'settle_price': 0.0, 'position': 0, 'pre_settle': 0.0}, {'symbol': 'SHSE.600066', 'sec_level': 1, 'multiplier': 1.0, 'margin_ratio': 1.0, 'pre_close': 21.969999313354492, 'upper_limit': 24.17, 'lower_limit': 19.77, 'adj_factor': 38.630978556603, 'info': {'symbol': '', 'sec_type': 0, 'exchange': '', 'sec_id': '', 'sec_name': '', 'sec_abbr': '', 'sec_asset': '', 'price_tick': 0.0, 'trade_n': 0, 'listed_date': None, 'delisted_date': None}, 'is_suspended': 0, 'settle_price': 0.0, 'position': 0, 'pre_settle': 0.0,}]
2.看不懂的这句代码如下
not_suspended_symbols = [item['symbol'] for item in not_suspended_info if not item['is_suspended']]
3.我自己对这句代码的理解(这句代码的本意是取不停牌的标的代码)
把not_suspended_info数据里面列索引is_suspended值不为0的数据取出来,然后返回symbol列给not_suspended_symbols
4.我的疑问
[item['symbol'] for item in not_suspended_info if not item['is_suspended']] 为什么可以取出来is_suspended为0的,symbol的值??????
这个代码的结构真的让人很抓瞎啊,请能看懂的人帮忙把这句代码分解解释下,谢谢
[item['symbol'] for item in not_suspended_info if not item['is_suspended']]
就等于:
[item['symbol'] for item in not_suspended_info if item['is_suspended'] == 0]
这是列表推导式。
|
|