我是Python的新手。我可以将列表更改为元组,例如
Site.prototype.hamburgerHandler = function() {
var site = this;
$('#hamburger').click(function(event) {
event.stopPropagation();
if(!site.menuOpen) {
$('nav ul').attr('class', 'open');
site.menuOpen = true;
} else {
$('nav ul').attr('class', 'closed');
site.menuOpen = false;
}
});
}
我正在尝试创建一个赋予项目及其位置的元组,因此会出现一个元组li = [1]
tuple(li)
。我不知道如何开始。
答案 0 :(得分:1)
如果你想要一个元组元组,你可以使用像这样的生成器表达式;
li = [4, 5, 6]
tuple((li[i], i) for i in range(len(li)))
或使用枚举;
tuple((v, k) for k,v in enumerate(li))
两者都将返回;
((4, 0), (5, 1), (6, 2))
如果你想要一个元组列表,你可以像这样使用列表推导表达式;
[(li[i], i) for i in range(len(li))]
或使用枚举;
[(v,k) for k, v in enumerate(li)]
两者都将返回;
[(4, 0), (5, 1), (6, 2)]
答案 1 :(得分:1)
使用enumerate
完全符合您的要求,只需翻转元素和索引:
public function __construct() {
parent::__construct();
$this->load->model('user/user_model');
$this->load->library('form_validation');
}
public function login() {
$this->form_validation->set_rules('username', 'username', 'trim|required');
$this->form_validation->set_rules('password', 'password', 'trim|required');
if ($this->form_validation->run() == FALSE) {
// login view
} else {
$login = $this->user_model->login($this->input->post('username'), $this->input->post('password'));
if ($login == true) {
redirect('some-controller');
} else {
set a error or reload login view.
}
}
}
答案 2 :(得分:0)
如果你只想要一个元组,你可以这样做:
li = (list[1], 1)
这里的括号是元组的文字语法。
如果您想对列表中的所有元素执行此操作,可以使用列表解析:
lis = [(list[i], i) for i in range(len(list))]
哪个会创建一个元组列表,每个元组都有元素及其索引。
答案 3 :(得分:0)
一种可能的方法是使用enumerate,
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
{% load static %}
<link rel="stylesheet" type="text/css" href="{% static 'gradebook/style.css' %}" />
</head>
<body>
<form action='.' method='POST'>
{% csrf_token %}
{{ form }}
</form>
<table cellpadding="0" cellspacing="0">
<tr>
<td>
{% if assignments %}
{% for assignment in assignments %}
<td colspan="2">{{assignment}}</td>
{% endfor %}
{% endif %}
</td>
</tr>
<tr>
<td> </td>
{% if assignments %}
{% for assignment in assignments %}
<td>д.р.</td>
<td>к.р.</td>
{% endfor %}
{% endif %}
</tr>
{% if students %}
<form actions='.' method='POST'>
{% csrf_token %}
{% for student in students %}
<tr>
<td>{{student.name}}</td>
{% for s in assignment_scores %}
{% if s.student.name == student.name %}
<td> {{ s.assignment_score }} </td>
<td> {{ s.class_assignment_score }} </td>
{%endif%}
{% endfor %}
</tr>
{% endfor %}
<button type="submit" class="save btn btn-default">Save</button>
</form>
{% else %}
<p> No students </p>
{% endif %}
</table>
</body>
</html>
打印
li = [10, 20, 30]
list(enumerate(li))
如果您希望输出处于(项目,位置)顺序,则可以使用
[(0, 10), (1, 20), (2, 30)]
答案 4 :(得分:0)
zip
的 range
是另一种选择:
In [4]: li = [2,4,6]
In [5]: zip(li, range(len(li)))
Out[5]: [(2, 0), (4, 1), (6, 2)]