鱼C论坛

 找回密码
 立即注册
查看: 1195|回复: 24

[已解决]有高人吗?求助,谢谢

[复制链接]
发表于 2020-5-29 11:20:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 兰竹皋 于 2020-5-29 12:34 编辑

想让member与inse元素相互交叉排列形成一个新列表:比如:['小甲鱼',88,....]

请问:图片中列表扩展式哪里有问题(编译时显示else处出现问题),
但按照if else 三元语句感觉没问题,
又应该怎么改呢?(else 后有个x,这里没剪切)
最佳答案
2020-5-29 13:28:56
兰竹皋 发表于 2020-5-29 13:26
谢谢,
emmm.....
(其实分开写,方法还是不少的,我是想用一句话,不创新函数来写,看看能不能成功)
...
  1. a=[j for i in zip(member,inse)for j in i]
复制代码
这样就是一句话,有意义么?
123.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-29 11:29:43 | 显示全部楼层
你这是 列表推导式 和  三元表达式 混着用了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-29 11:49:04 | 显示全部楼层
你是想达到什么效果,看不懂你写的代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-29 12:19:10 | 显示全部楼层
这样?

  1. mamber = ['小甲鱼', '黑夜', '迷途', '怡静', '秋舞斜阳']
  2. inde = [88, 90, 85, 90, 88]
  3. a = [x for x in mamber] if isinstance(x, int) else [x for x in inse]
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-29 12:25:11 | 显示全部楼层
本帖最后由 兰竹皋 于 2020-5-29 12:30 编辑
Twilight6 发表于 2020-5-29 11:49
你是想达到什么效果,看不懂你写的代码


想让member与inse元素相互交叉排列形成一个新列表:比如:['小甲鱼',88,....]

分开写很简单,我是想提高对列表推导式与三元的认知才这么写的,请问,它们两个不能一起用吗?
有什么简单方法能实现吗?还是只能分开写?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-29 12:26:15 | 显示全部楼层
本帖最后由 兰竹皋 于 2020-5-29 12:33 编辑


谢谢,是这个意思
但这么写还是会报错,会显示x变量没有定义;
再者这么分开,总感觉就不是一个列表了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-29 12:45:05 | 显示全部楼层
兰竹皋 发表于 2020-5-29 12:26
谢谢,是这个意思
但这么写还是会报错,会显示x变量没有定义;
再者这么分开,总感觉就不是一个列表了

x确实没有定义,要在前面加上一个定义或输入的过程

这个是三元操作符,不是列表,只是里面的某一个操作数是一个列表推导式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-29 12:45:54 | 显示全部楼层
兰竹皋 发表于 2020-5-29 12:25
想让member与inse元素相互交叉排列形成一个新列表:比如:['小甲鱼',88,....]

分开写很简单,我是想 ...

你这样好像不能这么写,乖乖用循环吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-29 12:47:46 | 显示全部楼层
兰竹皋 发表于 2020-5-29 12:26
谢谢,是这个意思
但这么写还是会报错,会显示x变量没有定义;
再者这么分开,总感觉就不是一个列表了

用数组试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-29 12:57:51 | 显示全部楼层
KevinHu 发表于 2020-5-29 12:45
你这样好像不能这么写,乖乖用循环吧

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-29 12:58:23 | 显示全部楼层

。。。数组。。。
什么意思?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-29 12:59:17 | 显示全部楼层

Python 没有数组概念,除非 numpy 之类的库
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-29 13:00:54 | 显示全部楼层
兰竹皋 发表于 2020-5-29 12:25
想让member与inse元素相互交叉排列形成一个新列表:比如:['小甲鱼',88,....]

分开写很简单,我是想 ...

不能这样混着用吧   

三元运算符是条件成立执行前面的操作 不成立执行else的操作 而列表推导式是加将 后面符合条件的加入列表   这就冲突了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-29 13:04:47 | 显示全部楼层
  1. def flatten(iterable, /):
  2.     for i in iterable:
  3.         if hasattr(i,'__iter__'):
  4.             yield from flatten(i)

  5.         else:
  6.             yield i

  7. #member=?
  8. #inse=?

  9. a=list(flatten(zip(member,inse)))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-29 13:20:47 | 显示全部楼层
兰竹皋 发表于 2020-5-29 12:58
。。。数组。。。
什么意思?

球球了,给个最佳吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-29 13:26:08 | 显示全部楼层

谢谢,
emmm.....
(其实分开写,方法还是不少的,我是想用一句话,不创新函数来写,看看能不能成功)
不过,这种消元组括号的方式,真。。。。高端?
现在我的水平没看懂。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-29 13:28:56 | 显示全部楼层    本楼为最佳答案   
兰竹皋 发表于 2020-5-29 13:26
谢谢,
emmm.....
(其实分开写,方法还是不少的,我是想用一句话,不创新函数来写,看看能不能成功)
...
  1. a=[j for i in zip(member,inse)for j in i]
复制代码
这样就是一句话,有意义么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-29 13:31:05 | 显示全部楼层
兰竹皋 发表于 2020-5-29 13:26
谢谢,
emmm.....
(其实分开写,方法还是不少的,我是想用一句话,不创新函数来写,看看能不能成功)
...

不过我还是要求个最佳
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-29 13:37:21 | 显示全部楼层
本帖最后由 兰竹皋 于 2020-5-29 13:39 编辑
永恒的蓝色梦想 发表于 2020-5-29 13:28
这样就是一句话,有意义么?


谢谢,原来还可以这么用,(虽然还是用了别的函数)
是有启迪意义的(毕竟我刚学,见识太少了)

话说,既然能这样,你14#又写一个函数是干什么。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-29 13:52:12 | 显示全部楼层
所以,总得来说可以一句话这么写:
member = [j for i in [(x,y) for x in member for y in inse if member.index(x)==inse.index(y)] for j in i]
哈哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 13:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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