当我在解释器中键入以下内容时,我得到了所需的输出行为:
>>> x = (7, 2, 1, 1, 6, 2, 1, 2, 1, 2, 2, 6)
>>> y = list(x)
>>> y
[7, 2, 1, 1, 6, 2, 1, 2, 1, 2, 2, 6]
Run Code Online (Sandbox Code Playgroud)
上面,我只是将一个元组转换为一个列表.但是,当我运行以下代码时,我得到了一个我不理解的答案.
pwm = input("enter PWM: ")
npwm = pwm.replace('),(', ', ')
y = list(npwm)
print(y)
Run Code Online (Sandbox Code Playgroud)
输出:
['(', '7', ',', ' ', '2', ',', ' ', '1', ',', ' ', '1', ',', ' ', '6', ',', ' ', '2', ',', ' ', '1', ',', ' ', '2', ',', ' ', '1', ',', ' ', '2', ',', ' ', '2', ',', ' ', '6', ')']
Run Code Online (Sandbox Code Playgroud)
谁能向我解释发生了什么?为什么上面的代码没有产生所需的输出:
[7, 2, 1, 1, 6, 2, 1, 2, 1, 2, 2, 6]
Run Code Online (Sandbox Code Playgroud)
编辑:哇,我不能感谢大家的帮助!我非常感谢每个人的病人和愿意帮助我的初学者问题.非常感谢你.以下是我工作的解决方案:
pwm = (7, 2, 1, 1),(6, 2, 1, 2),(1, 2, 2, 6)
npwm = pwm.replace('),(',', ').strip('(').strip(')')
y = list(ast.literal_eval(npwm))
print(y)
Run Code Online (Sandbox Code Playgroud)
当您调用list字符串时,它会生成一个列表,其中每个字符都是列表中的项目.例如:
>>> list("hey, you")
['h', 'e', 'y', ',', ' ', 'y', 'o', 'u']
Run Code Online (Sandbox Code Playgroud)
由于input在这种情况下返回的数据是一个字符串,因此调用list它会生成一个字符列表.
为了演示,这是将字符串'(1, 2, 3)'转换为列表的基本方法[1, 2, 3]:
>>> pwm = raw_input("enter PWM: ")
enter PWM: (1, 2, 3)
>>> pwm
'(1, 2, 3)'
>>> npwm = pwm.strip('(').strip(')')
>>> npwm
'1, 2, 3'
>>> npwm = npwm.split(',')
>>> npwm
['1', ' 2', ' 3']
>>> y = [int(x) for x in npwm]
>>> y
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
有人建议使用eval返回的字符串input.虽然这会做你想要的,但这是一个非常糟糕的习惯,因为python将评估(可能是恶意的)用户决定输入的任何表达.
另外,正如Sven Marnach正确指出的那样,input你在python 2.x中做了什么.幸运的是,已经在3.0中更正了,您必须使用它.
| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |