我注意到经常建议使用具有多个线程的队列,而不是列表和.pop().这是因为列表不是线程安全的,还是出于其他原因?
我正在迭代Python中的元素列表,对其执行某些操作,然后在满足特定条件时将其删除.
for element in somelist:
do_action(element)
if check(element):
remove_element_from_list
Run Code Online (Sandbox Code Playgroud)
我应该用什么代替remove_element?我已经看到了类似的问题,但注意到要为所有元素执行的do_action部分的存在,从而消除了使用过滤器的解决方案.
假设我有一个x未知长度的列表,我想从中随机弹出一个元素,以便列表之后不包含该元素.什么是最pythonic的方式来做到这一点?
我可以用一个相当不方便combincation做到这一点pop,random.randint以及len和希望看到更短的或更好的解决方案:
import random
x = [1,2,3,4,5,6]
x.pop(random.randint(0,len(x)-1))
Run Code Online (Sandbox Code Playgroud)
编辑:我想要实现的是从列表中连续弹出随机元素.(即,随机弹出一个元素并将其移动到字典中,随机弹出另一个元素并将其移动到另一个字典,...)
请注意,我使用的是Python 2.6,并且没有通过搜索功能找到任何解决方案.
我尝试使用PyAutoGui创建一个函数来检查屏幕上是否显示图像,并提出了这个:
def check_image_on_screen(image):
try:
pyautogui.locateCenterOnScreen(image)
return True
except:
return False
Run Code Online (Sandbox Code Playgroud)
它工作正常,但PyCharm告诉我,我不应该except裸露.把它留下来有什么问题?有没有更合适的方法来创建相同的功能?
X = [0,5,0,0,3,1,15,0,12]
for value in range(0,len(X)):
if X[value] <= 0:
del X[value]
print(X)
print(X)
Run Code Online (Sandbox Code Playgroud)
我运行了代码,但是我收到一条错误消息,指出列表超出了索引范围。有人可以帮我解决这个错误吗
我正在尝试搜索文本文件并检索包含一组特定单词的行.这是我正在使用的代码:
tyrs = subprocess.check_output('grep "^A" %s | grep TYR' % pocket_location, shell = True).split('\n')
Run Code Online (Sandbox Code Playgroud)
当文件包含grep标识的至少一行时,这可以正常工作.但是当grep没有标识任何行时,grep返回退出状态1并且我收到以下错误:
Traceback (most recent call last):
File "../../Python_scripts/cbs_wrapper2.py", line 324, in <module>
tyrs = subprocess.check_output('grep "^ATOM" %s | grep TYR' % pocket_location, shell = True).split('\n')
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 544, in check_output
raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command 'grep "^ATOM" cbsPrediction_files/1u9c_clean/1u9c_clean_fpocket_out/pockets/pocket0_atm.pdb | grep TYR' returned non-zero exit status 1
Run Code Online (Sandbox Code Playgroud)
我该如何避免这个问题?subprocess.check_output如果grep找不到任何内容,我只想返回一个空字符串.
谢谢
假设我有一个数字列表:
L = [1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)
当我迭代它时,如何从列表中删除一个元素,比方说3?
我尝试了以下代码,但它没有这样做:
for el in L:
if el == 3:
del el
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
谢谢,Boda Cydo.
我有一个由定义的项目组成的列表,每个项目都有一个属性 .name
t = [item1, item2]
Run Code Online (Sandbox Code Playgroud)
我想根据其属性从t列表中删除项目.name,例如remove()或pop()方法。也许我可以做类似的事情:
t.remove(item.name=="Removed me")
Run Code Online (Sandbox Code Playgroud)
也许我不需要遍历整个列表来过滤掉需要删除的项目。
我有这本词典:
dict_new =
{'extracted_layout': [nan, nan, nan, nan, nan, nan, nan, nan, nan, 'shyamanna layout', nan, nan, nan, nan, 'm t s layout', nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 'green glen layout', nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 'h s r layout', nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 'vikas layout', 'annaiah reddy layout', nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, …Run Code Online (Sandbox Code Playgroud) 我想输出差异两个元组并删除元组上的一个元素
a = [(1,2),(2,3),(3,3)]
if (1,2) in a:
## how to remove (1,2) on tuple
Run Code Online (Sandbox Code Playgroud)
我需要输出[(2,3),(3,3)]怎么做?
谢谢,
result = [(u'ABC', u'(Choose field)', u'ABCD', u'aa', u'A', u'A_100')]
Run Code Online (Sandbox Code Playgroud)
我尝试'(Choose field)'使用以下语法从上面的列表中删除:
result.remove('(Choose field)')
# and
result.remove("'(Choose field)'")
Run Code Online (Sandbox Code Playgroud)
但这两件事都不能正常工作,最终会出现此错误
result = [(u'ABC', u'(Choose field)', u'ABCD', u'aa', u'A', u'A_100')]
Run Code Online (Sandbox Code Playgroud) 这是我的元组列表:
[('Abbott', 'Texas'), ('Abernathy', 'Texas'), ('Abilene', 'Texas'), ('Ace', 'Texas'), ('Ackerly', 'Texas'), ('Alba', 'Texas'),('Addison', 'Texas'), ('Adkins', 'Texas'), ('Adrian', 'Texas'), ('Afton', 'Texas'), ('Agua Dulce', 'Texas'), ('Aiken', 'Texas'), ('Alamo', 'Texas'), ('Alanreed', 'Texas'), ('Albany', 'Texas')]
Run Code Online (Sandbox Code Playgroud)
从上面的元组列表中我想删除 ('Alba', 'Texas')
我尝试了很多方法,但没有给我预期的结果。
我试过了
[x for x in listobj if any(y is not Alba for y in x)]
Run Code Online (Sandbox Code Playgroud) python ×12
list ×6
python-2.7 ×2
python-3.x ×2
bare ×1
dictionary ×1
except ×1
grep ×1
pyautogui ×1
random ×1
subprocess ×1
tuples ×1