有方法isiterable吗?到目前为止我找到的唯一解决方案是打电话
hasattr(myObj, '__iter__')
Run Code Online (Sandbox Code Playgroud)
但我不确定这是多么万无一失.
我有这样的事情:
extensionsToCheck = ['.pdf', '.doc', '.xls']
for extension in extensionsToCheck:
if extension in url_string:
print(url_string)
Run Code Online (Sandbox Code Playgroud)
我想知道在python中更优雅的方式是什么(不使用for循环)?我在考虑这样的事情(比如来自c/c ++),但它不起作用:
if ('.pdf' or '.doc' or '.xls') in url_string:
print(url_string)
Run Code Online (Sandbox Code Playgroud)
编辑:我有点不得不解释这与下面的问题有什么不同,后者被标记为潜在的重复(所以它不会被关闭我猜).
区别在于,我想检查字符串是否是某些字符串列表的一部分,而另一个问题是检查字符串列表中的字符串是否是另一个字符串的子字符串.当你在线寻找答案时,类似但不完全相同的事物和语义很重要.这两个问题实际上是在寻求解决彼此相反的问题.两者的解决方案结果都是相同的.
如果我有一个字符串数组,我可以检查一个字符串是否在数组中而不进行for循环?具体来说,我正在寻找一种方法在一个if语句中这样做,所以像这样:
if [check that item is in array]:
Run Code Online (Sandbox Code Playgroud) 示例列表: mylist = ['abc123', 'def456', 'ghi789']
如果匹配子字符串,我想检索一个元素,比如 abc
sub = 'abc'
print any(sub in mystring for mystring in mylist)
Run Code Online (Sandbox Code Playgroud)
True如果列表中的任何元素包含模式,则上面打印.
我想打印匹配子字符串的元素.所以,如果我正在检查'abc'我只想'abc123'从列表中打印.
检查字符串x是否为子串的Pythonic方法y是:
if x in y:
Run Code Online (Sandbox Code Playgroud)
如果找到x就相当于a,b,c,d,e,f或g也是Python的:
if x in [a,b,c,d,e,f,g]:
Run Code Online (Sandbox Code Playgroud)
但是,如果检查一些字符串x包含两种a,b,c,d,e,f或g看起来笨重:
if a in x or b in x or c in x or d in x or e in x or f in x or g in x
Run Code Online (Sandbox Code Playgroud)
是否有更多Pythonic方法检查字符串是否x包含列表元素? …
我发现自己反复编写相同的代码块:
def stringInList(str, list):
retVal = False
for item in list:
if str in item:
retVal = True
return retVal
Run Code Online (Sandbox Code Playgroud)
有没有什么办法可以更快/更少的代码编写这个功能?我通常在if语句中使用它,如下所示:
if stringInList(str, list):
print 'string was found!'
Run Code Online (Sandbox Code Playgroud) 我之前已经找到了这个问题的一些答案,但是对于当前的Python版本来说它们似乎已经过时了(或者至少它们对我不起作用).
我想检查字符串列表中是否包含子字符串.我只需要布尔结果.
我找到了这个解决方案
word_to_check = 'or'
wordlist = ['yellow','orange','red']
result = any(word_to_check in word for word in worldlist)
Run Code Online (Sandbox Code Playgroud)
从这段代码我希望得到一个True值.如果单词是"der",那么输出应该是False.
但是,结果是生成器函数,我找不到获取True值的方法.
任何的想法?
我有一个清单:
my_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456', 'def-111', 'qwe-111']
bad = ['abc', 'def']
Run Code Online (Sandbox Code Playgroud)
并且想要搜索包含字符串'abc'和'def'(以及其他不良内容)的项目.我怎样才能做到这一点?
几乎同样的问题在这里.
我正在寻找sklearn中的一个模块,它可以让你得到单词 - 共生矩阵.
我可以得到文档术语矩阵,但不知道如何获得共生词的单词 - 矩阵.
我有一个长字符串列表,我想得到列表元素的索引与另一个列表中的字符串的子字符串匹配.检查是否列表项包含AA单字符串列表里面是很容易做到与列表理解,像这样的问题:
my_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
thing_to_find = "abc"
matching = [i for i, x in enumerate(my_list) if thing_to_find in x]
Run Code Online (Sandbox Code Playgroud)
但是,我不仅要检查是否"abc"在x,但是如果列表中有另一个列表中的任何字符串,如下所示:
my_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
things_to_find = ['abc', 'def']
Run Code Online (Sandbox Code Playgroud)
这显然不起作用(但如果它真的很酷):
matching = [i for i, x in enumerate(my_list) if things_to_find in x]
Run Code Online (Sandbox Code Playgroud)
如果我单独运行命令,我可以找到列表索引,但它很乏味和可怕:
print([i for i, x in enumerate(my_list) if 'abc' in x])
# [0, 3]
print([i for i, x in enumerate(my_list) if 'def' in x])
# [1]
Run Code Online (Sandbox Code Playgroud)
找到一个列表中的元素在另一个列表中找到的所有实例的索引的最佳方法是什么?
我在解决我在这里做错了什么问题.我有下面的代码(相当简单).
def compileWordList(textList, wordDict):
'''Function to extract words from text lines exc. stops,
and add associated line nums'''
i = 0;
for row in textList:
i = i + 1
words = re.split('\W+', row)
for wordPart in words:
word = repr(wordPart)
word = word.lower()
if not any(word in s for s in stopsList):
if word not in wordDict:
x = wordLineNumsContainer()
x.addLineNum(i)
wordDict[word] = x
elif word in wordDict:
lineNumValues = wordDict[word]
lineNumValues.addLineNum(i)
wordDict[word] = lineNumValues
elif any(word in s …Run Code Online (Sandbox Code Playgroud) 我在下面的不同场景中使用了“in”运算符。一个直接在字符串上,另一个在字符串列表上。
>>> "yo" in "without you"
True
>>> "yo" in "without you".split()
False
Run Code Online (Sandbox Code Playgroud)
为什么输出不同?
['aa', 'ab', 'aaaa', 'ggg', 'agaga', 'a']
Run Code Online (Sandbox Code Playgroud)
从上面的列表中,我希望能够以最短的方式找出列表中是否包含"b".谢谢!
python ×13
list ×5
string ×5
if-statement ×2
python-3.x ×2
arrays ×1
contains ×1
iterable ×1
matrix ×1
scikit-learn ×1
substring ×1