python - 循环中的字符串连接恰好在左侧。为什么?
问题描述
字符串连接恰好在右侧,例如:
foo = 'Sorting1234'
foo += 'er'
print(foo)
Sorting1234er
但是在循环中会发生这种情况:
string = 'Sorting1234'
x = ''
for c in string:
if c.islower():
x+=c
if c.isupper():
x+=c
print(x)
Sorting
我希望输出是:
ortingS
因为我首先在循环中“附加”小写字母,然后再“附加”大写字母。
解决方案
目前,您正在按原始字符串的顺序处理字母,而不是按大小写。这意味着您的当前for
循环几乎没有效果,但可以防止打印数值。
实现您正在寻找的行为的一种方法,首先附加小写字符,将使用两个循环:第一个查找小写字符,第二个查找大写字符,即:
string = 'Sorting1234'
x = ''
for c in string:
if c.islower():
x += c
for c in string:
if c.isupper():
x += c
print(x)
输出:
ortingS
另一种需要遍历字符串的方法可能是存储小写和大写字符的列表,然后在最后加入它们:
lower, upper = [], []
for c in string:
if c.islower():
lower.append(c)
elif c.isupper():
upper.append(c)
print(''.join(lower + upper))
输出:
ortingS
推荐阅读
- r - 如何在 R 中生成 copula 的 3D 曲面图
- javascript - 单元测试 LitElement
- java - JDT ASTParser:无法解析为类型/变量
- python - 带有 lightgbm 的 GridSearchCV 需要不使用 fit() 方法?
- bash - 在循环 bash 中使用变量
- c++ - 为什么 int 类型的枚举类值不能用作 int
- python - 如何从 DBpedia 中找出所有 skos:broader 关系,以便使用 SPARQL 查询构建概念层次结构(树)
- excel - 如何将蓝色的单元格计数到另一张纸上的单元格中?
- reactjs - React Froala Editor 不显示段落下拉菜单
- c++ - ntdll.dll 库函数中用户模式调用的 STATUS_ACCESS_VIOLATION 原因