您可以__slots__使用列表或元组(或任何可迭代的?)在新型python类中进行定义。创建实例后,该类型仍然存在。
鉴于元组总是比列表更有效率并且是不变的,是否有任何理由不希望使用元组__slots__呢?
>>> class foo(object):
... __slots__ = ('a',)
...
>>> class foo2(object):
... __slots__ = ['a']
...
>>> foo().__slots__
('a',)
>>> foo2().__slots__
['a']
Run Code Online (Sandbox Code Playgroud) 在python中,list数据结构是一系列元素.类似地,a tuple也是一系列元素,然而,元组是immutable.
是什么原因产生了这样一个类似的数据结构,那就是只有功能,而不是列表,它是不能改变的?它是否可以通过不可变来节省内存空间?
此外,如果列表和元组包含完全相同的数据,它们是否会在内存中使用相同的空间量?
从Django介绍教程,在\mysite\polls\admin.py:
from django.contrib import admin
#...
class PollAdmin(admin.ModelAdmin):
#...
inlines = [ChoiceInline]
list_display = ('question', 'pub_date', 'was_published_today')
list_filter = ['pub_date']
admin.site.register(Poll, PollAdmin)
Run Code Online (Sandbox Code Playgroud)
为什么内联和list_filter使用列表,同时list_display使用元组?内联并且list_filters由于某种原因需要变得可变吗?
我只想在这里理解设计决定.
我有一个包含 3 个字段的列表:
[weight, age, marks]
Run Code Online (Sandbox Code Playgroud)
我想在每一行上应用哈希函数并将这些哈希值存储为列表。如何继续?
我使用以下函数组合了体重、年龄、标记的各个列表zip():
list1=zip(weight,age,marks)
Run Code Online (Sandbox Code Playgroud)
请帮我解决这个问题,我是Python新手。提前致谢。
当自定义管理站点时,我们可以使用list或tuple喜欢
@admin.register(Model_name)
class Model_nameAdmin(admin.ModelAdmin):
list_display = ['a', 'b', 'c'] # using list
# lets say a, b, c are fields of model(Model_name)
or
list_display = ('a', 'b', 'c') # using tuple
Run Code Online (Sandbox Code Playgroud)
我很好奇使用列表与元组相比是否有任何区别,反之亦然,例如在检索管理站点或类似内容时的性能。我知道元组比列表的性能更好,但我们不会在这里循环。我查看了列表和元组之间的区别是什么,为什么-django-use-tuples-for-settings-and-not-lists, 为什么-djangos-modeladmin-uses-lists-over -元组,反之亦然,但没有得到我的答案。一直使用元组更好吗?我专门询问管理网站。
所以我在Python中编写了一个简短而简单的聊天机器人,但这是一个令人恼火的问题.程序posResponses() 最初只会调用该函数.
在上下文中,如果我用"悲伤","可怕"甚至"asdfasdfasdf"回答其最初的问题,我仍会得到积极的回应.
应该发生的是如果我输入一个否定/不明确的关键字,应该调用negResponses()/ ambiguousResponses()function.事实并非如此.我做错了什么,我该如何解决?代码如下:
import random
import time
def opening():
print('Hello!')
def responseType():
responseType = str(input('How are you ?'))
if responseType == 'good' or 'great' or 'fantastic' or 'decent' or 'fine' or 'ok' or 'okay': posResponses()
elif responseType == 'bad' or 'terrible' or 'sad' or 'grumpy' or 'angry' or 'irritated' or 'tired': negResponses()
else: ambiguousResponses()
def posResponses():
number = random.randint(1, 4)
if number == 1:
print('That\'s great! So what\'s up?')
input()
ambiguousResponses()
if number == …Run Code Online (Sandbox Code Playgroud) 创建数组有两个选项:
x = numpy.array([[5, 5, 3, 2], [2, 1, 0, 9], [3, 7, 6, 0]])
y = numpy.array([(5, 5, 3, 2), (2, 1, 0, 9), (3, 7, 6, 0)])
Run Code Online (Sandbox Code Playgroud)
但他们有相同的产出.
[[5 5 3 2]
[2 1 0 9]
[3 7 6 0]]
Run Code Online (Sandbox Code Playgroud)
它们都有相同的类型:
<class 'numpy.ndarray'>
Run Code Online (Sandbox Code Playgroud)
哪一个更好,有什么区别?
我有一个元组列表,我从中删除了第i个元素.现在我正在这样做:
map(lambda e: list(e)[:i] + list(e)[(i + 1):], data)
Run Code Online (Sandbox Code Playgroud)
它将元组转换为一个列表(两次!),然后切掉元素.结果意味着我有列表而不是元组 - 但这完全没问题.有没有更快的方法,可能通过在单独的地图操作中将每个元组转换为列表?
有哪些代码结构/编程技术可以避免这种情况:
if url.netloc == "www.youtube.com" or "youtu.be" or "soundcloud.com or //
"instagram.com" or "vine.co" or ETC ETC
do XYZ
Run Code Online (Sandbox Code Playgroud) python ×9
django ×2
list ×2
arrays ×1
django-admin ×1
hash ×1
if-statement ×1
immutability ×1
numpy ×1
python-2.7 ×1
python-3.x ×1
refactoring ×1
tuples ×1