[英]Explain to me how .join() works in Python
我创建了一个答案验证代码以用于故障排除程序。 我已经使用了明显的验证器来回答数字(使用try / except方法),但是现在我也有是/否的问题。 我搜寻了互联网并进行了堆栈交换,发现了一种从答案中删除所有整数的方法(不仅是答案边缘的整数,如.strip()
)。 它使用join方法:
while True:
a = input("Yes or No? ").lower()
a = ''.join(c for c in a if c.isalpha())
if a == "y" or a == "yes":
print("You inputted Yes!")
break
elif a == "n" or a == "no":
print("You inputted No!")
break
else:
print("Please input a valid option!")
因此,如果用户输入“ Y312eS2”,则它将接受为“是”答案。 我想知道它是如何工作的,因为我必须对其进行解释,并且互联网上的所有.join()
示例现在都不会使用它。
谁能帮我?
c for c in a if c.isalpha()
遍历a
所有字符并仅产生字母而不是数字的c.isalpha() is True
)
''.join(['A', 'B', 'C'])
将字符列表连接到一个不带分隔符的字符串:
ABC
您有一个str.join()
方法 。 此方法只是将可迭代参数(必须为字符串)中的所有值放到一个新字符串中,并将您在其上调用它的字符串对象作为连接符:
>>> ' - '.join(['foo', 'bar', 'baz'])
'foo - bar - baz'
>>> ', '.join(['spam', 'eggs', 'ham'])
'spam - eggs - ham'
在您的示例中,使用了空字符串''
,因此没有任何分隔要连接的字符串的方法:
>>> ''.join(['Py', 'thon'])
'Python'
该方法的输入是一个生成器表达式 :
(c for c in a if c.isalpha())
如果所有字符都是字母 ,这会将所有字符从a
传递给str.join()
方法; 然后, str.isalpha()
仅返回true,而不是数字,空格或任何其他类型的字符:
>>> '1'.isalpha()
False
>>> 'c'.isalpha()
True
所以''.join(c for c in a if c.isalpha())
将字母c
中的所有字符连接到一个新字符串中,从而有效地滤除了其他任何东西 。
.join()
本身与从字符串中删除某些字符或验证任何内容无关。
.join()
只需获取被调用的字符串(如果为'x'.join()
),则为'x'
),将其连接到作为参数获取的可迭代对象中的每个字符串,并将整个对象作为一个单独的返回串。
例如:
'*'.join(['1', '2'])
>> '1*2'
在您的代码示例中,向传递给.join()
的iterable中添加了条件语句,因此它将仅采用字母字符串。
.join()方法通常用于将列表转换为字符串。
您将列表理解插入该方法中。
https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions
列表已构建,.join()方法将您构建的列表中的每个字符与分隔符(在您的情况下,没有'')连接在一起。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.