Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python:在列表理解中分配或更新参数_Python_Python 2.7_List Comprehension - Fatal编程技术网

python:在列表理解中分配或更新参数

python:在列表理解中分配或更新参数,python,python-2.7,list-comprehension,Python,Python 2.7,List Comprehension,我是python新手,正在使用python2.7 我想创建脚本,更改字符串中每个字母的大小写。 如果我通过“ABcdE”脚本将给出输出“ABcdE” 有很多方法,但我想用于此任务 我使用了以下代码: str = 'abcDE'; str1 = [x for x in str if ord(x)>=97 and ord(x)<=122 x-32 elif ord(x)>=65 and ord(x)<=90 x+32]; str='abcDE'; str1=[x代表st

我是python新手,正在使用python
2.7

我想创建脚本,更改字符串中每个字母的大小写。 如果我通过“ABcdE”脚本将给出输出“ABcdE”
有很多方法,但我想用于此任务

我使用了以下代码:

str = 'abcDE';
str1 = [x for x in str if ord(x)>=97 and ord(x)<=122 x-32 elif   ord(x)>=65 and ord(x)<=90 x+32];
str='abcDE';

str1=[x代表str中的x如果ord(x)>=97且ord(x)=65且ord(x)您需要使用条件表达式;您使用的是过滤,而过滤器不能改变生成的内容,只能限制考虑的元素

应更改左侧表达式,以便为迭代中的每个元素生成值的部分:

[x.upper() if 122 >= ord(x) >= 97 else x.lower()
 for x in yourstring]
上面处理的是
yourstring
中的所有字母(我将其重命名以避免使用内置名称
str
),对于每个这样的字母(在
x
中),如果是小写字母,则使用大写版本,否则使用小写版本

演示:

如果需要新字符串,请使用
'.join()


或者,您也可以使用内置程序执行相同的操作。

您可以执行以下操作:

str1 = [x.lower() if x.isupper() else x.upper() for x in str]

列表理解没有
elif
选项,没有。请尝试使用括号中的x-32,如so x=(x-32)?请注意,您的控制台输出是文本。请将该文本复制并粘贴到此处,屏幕截图不可搜索。我的主要问题是,我们是否可以在理解中修改或更新变量?@VishalPatel您不能分配给
x
,不。您也不需要。
''.join([x.upper() if 122 >= ord(x) >= 97 else x.lower()
         for x in yourstring])
str1 = [x.lower() if x.isupper() else x.upper() for x in str]